Javaの最も一般的な面接の質問:モジュール12

十二、休止状態

 

113なぜ休止状態でしょうか?

  • パッケージを作るためにJDBCデータベース・アクセス・コードは、データアクセス層退屈な繰り返しのコードを簡素化します。

  • Hibernateは、JDBCベースの永続化フレームワークの主流である優れたORMの実装です。DAO層を簡素化するためにコーディングの彼の偉大な程度

  • 透明性を実装するためにJavaのリフレクション機構の代わりに、バイトコードプログラムを使用して休止状態。

  • それは、軽量フレームであるため、休止状態のパフォーマンスは、非常に良いです。柔軟性は非常によくマッピングされました。これは、リレーショナルデータベースのさまざまな、1対多の複雑な関係をサポートしています。

 

114 ORMフレームワークとは何ですか?

オブジェクト - リレーショナルマッピング(オブジェクトリレーショナルマッピング、ORMと呼ばれる)、オブジェクト指向開発のアプローチは、今日のエンタープライズアプリケーション開発環境で主流の開発アプローチであり、リレーショナルデータベースは、データの主データ・ストレージ・システム、エンタープライズアプリケーション環境永久記憶装置です。オブジェクトとリレーショナル・データは、メモリ内のビジネスエンティティのパフォーマンスオブジェクトの形式でビジネスエンティティの二つの形式、データベースのリレーショナル・データのパフォーマンスをしています。会合およびメモリ内のオブジェクト間の継承関係、およびデータベースには、リレーショナル・データは、多くの団体や継承に多くの発現を直接することができません。したがって、オブジェクト - リレーショナル・マッピング(ORM)システムは、リレーショナルデータベースのデータにマッピングするオブジェクトのための主要な手順ミドルウェアの形で存在します。

 

115コンソールに印刷されたSQL文を表示する方法冬眠?

参考:blog.csdn.net/Randy_Wang_/article/details/79460306

 

116は、検索するには、いくつかの方法があり冬眠しましたか?

 

  1. HQLのお問い合わせ

  2. SQLクエリ

  3. 条件お問い合わせ

HQLクエリ、SQLクエリ、クエリ条件の

HQL:Hibernateクエリー言語オブジェクト指向文言:. 
クエリのクエリ = session.createQuery(「顧客から名前=?」;)
query.setParameter( 0、「倉先生」); 
クエリ。リスト(); 



QBC:基準(基準クエリ)することで、クエリ
基準クライテリア = session.createCriteria(お客様。クラス); 
criteria.add(Restrictions.eq( "名前"、 "花の女の子を" )); 
リスト <顧客>一覧= criteria.list(); 



SQL:
のSQLQueryクエリ = session.createSQLQuery( "お客様からのSELECT *" ); 
リストの<Object []>一覧= Query.list(); 

のSQLQueryクエリSession.createSQLQuery =( "お客様からのSELECT *" ); 
query.addEntity(お客様。クラス); 
リスト <顧客>リスト= Query.list(); 



HQL:特定のカテゴリ
 1、2属性クエリ、クエリパラメータ、名前付きクエリパラメータ図3に示すように、4は、クエリ、クエリページ5に関連付けられ、統計関数



HQLとSQLの区別

HQLは、オブジェクト指向のクエリ操作、構造化照会言語SQL指向データベーステーブル構造であります

 

 

117は、エンティティ・クラスがその最終のように定義することができる冬眠しますか?

Hibernateのエンティティクラスは、最終的なカテゴリーとして定義されますが、このアプローチは良くないことができます。Hibernateは、最終的なクラスが拡張されたため、Hibernateはもはやプロキシを使用することはできませんので、Javaは、許可されていませんので、あなたが、最終的としてクラスを定義した後、エンティティクラスならば、関連する遅延の場合のパフォーマンスを向上させるためにプロキシモードを使用して、このようになるので、限界ツールを使用すると、パフォーマンスを向上させることができます。あなたは、永続クラスがインタフェースを実装し、インタフェース内のエンティティ・クラス内のすべてのパブリックメソッドへの言葉の定義にすべてのターンを宣言している場合は、あなたは先に述べた不利な結果を回避することができるようになります。

 

118整数とintが休止状態の違いは何マッピングを使用していますか?

OIDは、int型のために定義されている場合、それは、オブジェクトが一時的であるかどうかに応じて判定された場合、OIDが定義されている場合、休止状態ではInteger型、Hibernateはまた、HBMマッピングファイルを設定する必要がある、ヌル値を有することができますunsaved-属性値は0です。

 

119は、それがどのように動作し冬眠しますか?

作品を休止状態:

  1. //設定ファイルhibernate.cfg.xmlのを読み、解析し、コンフィギュレーションの設定=新しいConfiguration()のconfigure()で。

  2. <= "COM / XX / User.hbm.xml" /マッピングリソース>マップ情報によって読み出され解析hibernate.cfg.xmlの

  3. SessionFactoryのSF = config.buildSessionFactory()によって; // SessionFactoryのを作成

  4. セッションsession = sf.openSession(); //打开Sesssion

  5. session.beginTransactionを()= TXトランザクション; //作成し、トランザクションのトランザクションの独立を開始

  6. 永続的な操作データを操作し、操作の永続性

  7. tx.commit(); //トランザクションをコミット

  8. クローズセッション

  9. 閉じるSesstionFactory

 

差が120 GET()と負荷()は何ですか?

  • 負荷()ロードSQLにおける遅延がない場合、他のプロパティは、オブジェクトを使用しません

  • すぐにオブジェクトを使用している場合()は他のプロパティを取得しない、また、生成されたSQLのロード

 

キャッシュメカニズムについての121話が冬眠するには?

キャッシュと二次キャッシュバッファに休止状態。

セッション・レベルのキャッシュは、キャッシュ、トランザクション内の有効範囲は、ビルトインはアンインストールすることはできません。二次キャッシュは、アプリケーションからのアプリケーション起動最後に、効果的なSesionFactoryレベルのキャッシュです。オプションであり、デフォルトの二次キャッシュは、手動で開く必要はありません。データベースを保存した後、キャッシュメモリにコピーを保存し、必要に応じて同時に更新されたデータベースを更新します。

二次キャッシュに保存するのに適したデータのどのような?

  • 最終返信時間はほとんどのデータポストを修正されていません

  • 頻繁に要求された場所データの電気の供給

  • 同時データが時折現れることができない非常に重要なデータ

  • これは、データへの同時アクセスができません

  • 定数データ

拡張:デフォルトでは、Hibernateのセカンドレベルキャッシュは、分散キャッシュをサポートしていません。2の代わりにキャッシュするために他の中央キャッシュのRedis、memcaheを使用してください。

 

122は、どのような状態のオブジェクトを休止状態?

三つの状態でオブジェクトを休止:

  1. トランジェント(瞬間):新しいオブジェクトがちょうど出て、他の値を設定し、IDを設定していません。

  2. 永続的(永続):保存()、するsaveOrUpdate()を呼び出すと、それが永続的になり、そこのID。

  3. 外れたときに完了した後にセッションクローズ():種の(デタッチ)デタッチ。

     

 

123 getCurrentSessionとのOpenSessionあるで休止状態の違いは何ですか?

OpenSessionは文字通り見ることができ、新しいセッション・オブジェクトを開くことで、それぞれの時間は、一列に複数回使用される場合、同一のオブジェクトを取得し、呼び出すためにクローズアップ使用されていない新しいセッション、セッションを開くことです方法は、セッションを閉じました。

 

getCurrentSessionに、文字通り見ることができ、現在のコンテキストは、最初にこの方法を使用する場合、自動的にセッションオブジェクトを生成し、セッションオブジェクトを取得すること、およびセッションの連続使用時間が同じオブジェクトを与えることであり、これはのOpenSession簡単な言葉の違いの1つである、getCurrentSessionはこれです:あなたはすでに使用している場合は、古い、構築されていない場合は新しいものと。

 

実際の開発では、多くの場合getCurrentSessionを使用して、一般的なプロセスは、同じトランザクション(つまり、データベースを使用して、)であるので、それは一般的にのOpenSessionのOpenSessionの多かれ少なかれ使用は、インターフェイスの比較的古い設定される注: 。

 

124 Hibernateのエンティティクラスは、引数なしコンストラクタは行わないでなければなりませんか?なぜ?

 

Hibernateフレームワークは、デフォルトコンストラクタを呼び出すため、クラスClassのnewInstanceメソッドは、このメソッドはデフォルトのコンストラクタを呼び出すことによって、オブジェクトのインスタンスを作成することであることを、インスタンスオブジェクトを構築する必要があります。

また、あなたが任意のコンストラクタを提供しない場合、仮想マシンは自動的にデフォルトコンストラクタ(引数なしのコンストラクタ)を提供していることを思い出させていますが、他のコンストラクタは引数を持って提供する場合、仮想マシンは、もはやあなたのためのデフォルトコンストラクタを提供しないだろうこの方法は、その後、手動でコードに引数なしのコンストラクタを記述するか、しなければならない新しいXXXX()与えられているデフォルトコンストラクタが必要とされていないので、複数のコンストラクタがある場合にのみ、ここでは必要です。」これは、手動で書かれなければならない「という意味」しなければなりません。」

 

(終わり)

おすすめ

転載: www.cnblogs.com/xiaofengwang/p/11257298.html
おすすめ