ホームページ 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Javaの平方根 Javaの平方根 Aug 30, 2024 pm 04:26 PM

Java の平方根のガイド。ここでは、Java で平方根がどのように機能するかを、例とそのコード実装をそれぞれ示して説明します。

Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Java における完全数のガイド。ここでは、定義、Java で完全数を確認する方法、コード実装の例について説明します。

Java の乱数ジェネレーター Java の乱数ジェネレーター Aug 30, 2024 pm 04:27 PM

Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

Javaのアームストロング数 Javaのアームストロング数 Aug 30, 2024 pm 04:26 PM

Java のアームストロング番号に関するガイド。ここでは、Java でのアームストロング数の概要とコードの一部について説明します。

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Java のスミス番号のガイド。ここでは定義、Java でスミス番号を確認する方法について説明します。コード実装の例。

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

See all articles