検索
ホームページJava&#&はじめるJava 永続層インタビューの質問 (2)

Java 永続層インタビューの質問 (2)

Mar 20, 2020 pm 06:17 PM
javaインタビュー

Java 永続層インタビューの質問 (2)

#1. MyBatis における名前空間の役割を説明します。

大規模なプロジェクトでは、多数の SQL ステートメントが存在する可能性がありますが、現時点では、各 SQL ステートメントに一意の識別 (ID) を与えるのは簡単ではありません。この問題を解決するために、MyBatis では、マッピング ファイルごとに一意の名前空間を作成し、このマッピング ファイルで定義された各 SQL ステートメントがこの名前空間で定義された ID になるようにすることができます。

この ID が各ネームスペースで一意であることが保証できれば、たとえ異なるマッピング ファイル内のステートメント ID が同じであっても、競合は発生しなくなります。

(推奨チュートリアル: java クイック スタート )

2. MyBatis の動的 SQL とは何を意味しますか?

一部の複雑なクエリでは、複数のクエリ条件を指定することがありますが、これらの条件は存在する場合と存在しない場合があります。永続層フレームワークを使用しない場合は、SQL をアセンブルする必要がある場合があります。しかし、MyBatis はこの問題を解決するために動的 SQL 機能を提供します。

MyBatis で動的 SQL を実装するために使用される要素は主に次のとおりです:

- if - 選択 / いつ / それ以外の場合 - トリム - 場所 - 設定 - foreach

使用例:

   <select id="foo" parameterType="Blog" resultType="Blog">        
   select * from t_blog where 1 = 1
        <if test="title != null">            
           and title = #{title}
        </if>
        <if test="content != null">            
           and content = #{content}
        </if>
        <if test="owner != null">            
           and owner = #{owner}
        </if>
   </select>

3. JDBC プログラミングの欠点は何ですか? MyBatis はこれらの問題をどのように解決しますか?​​​​​

MyBatis: SqlMapConfig.xml でデータ リンク プールを構成し、接続プールを使用してデータベース リンクを管理します。

(2) JDBC: SQL ステートメントがコード内に記述されるため、コードの保守が困難になります。SQL の実際のアプリケーションは大幅に変更される可能性があり、SQL の変更には Java コードの変更が必要です。

MyBatis: XXXXmapper.xml ファイルで SQL ステートメントを構成し、Java コードから分離します。

(3) JDBC: SQL ステートメントにパラメーターを渡すのは面倒です。SQL ステートメントの where 条件は必ずしも確実ではなく、多かれ少なかれ一定である可能性があり、プレースホルダーはパラメータは 1 対 1 です。

MyBatis: Mybatis は Java オブジェクトを SQL ステートメントに自動的にマップします。

(4) JDBC: 結果セットを解析するのは面倒です。SQL の変更により解析コードも変更されるため、解析する前にコードを走査する必要があります。データベース レコードを次のように解析すると便利です。ポジョオブジェクト。

MyBatis: Mybatis は SQL 実行結果を Java オブジェクトに自動的にマッピングします。

4. MyBatis と Hibernate の違いは何ですか?

(1) Mybatis は Hibernate とは異なります。MyBatis はプログラマ自身が SQL ステートメントを記述する必要があるため、完全な ORM フレームワークではありません。ただし、mybatis は、XML または XML を通じて実行されるように SQL ステートメントを柔軟に設定できます。そして、Java オブジェクトと SQL ステートメントをマップして最終的に実行される SQL を生成し、最後に SQL 実行の結果をマップして Java オブジェクトを生成します。

(2) Mybatis は学習閾値が低く習得が容易であり、プログラマが独自の SQL を直接記述することができるため、SQL の実行性能を厳密に制御することができ、柔軟性が高く、複雑なソフトウェア開発に非常に適しています。インターネット ソフトウェア、エンタープライズ オペレーション ソフトウェアなどのリレーショナル データ モデルに対する高い要件があります。この種のソフトウェアに対する需要は頻繁に変化するため、需要が変化すると結果を迅速に出力する必要があります。ただし、柔軟性の前提として、mybatis はデータベースに依存できないため、複数のデータベースをサポートするソフトウェアを実装する必要がある場合は、複数の SQL マッピング ファイルをカスタマイズする必要があり、作業負荷が高くなります。

(3) Hibernate は、強力なオブジェクト/リレーショナル マッピング機能と優れたデータベース独立性を備えています。リレーショナル モデルに対する要件が高いソフトウェア (要件が固定されたカスタマイズされたソフトウェアなど) の場合、Hibernate を使用して開発すると、次のことが可能になります。多くのコードを節約し、効率を向上させます。しかし、Hibernate の欠点は、学習の敷居が高く、習熟の敷居がさらに高いことであり、O/R マッピングをどのように設計するか、パフォーマンスとオブジェクト モデルをどのように比較検討するか、Hibernate を上手に使用する方法が必要であることです。強力な経験と能力。

要するに、限られたリソース環境でユーザーのニーズに合わせて保守性と拡張性の良いソフトウェアアーキテクチャを作ることができれば、それは良いアーキテクチャなので、フレームワークはあくまで適切であれば最高です。

5. MyBatis の一次キャッシュと二次キャッシュについて簡単に説明してください。

Mybatis は、まずキャッシュ内の結果セットをクエリします。結果セットがない場合は、データベースにクエリします。存在する場合は、キャッシュから結果セットを取得し、データベースにアクセスせずに返します。データベース。 Mybatis の内部ストレージ キャッシュは HashMap を使用し、キーは hashCode sqlId SQL ステートメントです。 value は、クエリからのマッピングによって生成された Java オブジェクトです。

Mybatis の 2 次キャッシュはクエリ キャッシュです。そのスコープはマッパーの名前空間です。つまり、同じ名前空間で SQL をクエリすると、キャッシュからデータを取得できます。 2 次キャッシュは SqlSession にまたがることができます。

推奨される関連ビデオ チュートリアル:

Java ビデオ チュートリアル

以上がJava 永続層インタビューの質問 (2)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はcsdnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境