この記事では、冬眠を学習する過程における冬眠の怠zyな負荷の問題を解決する4つの方法をまとめたものです。
いわゆる怠zyな負荷は、負荷が遅れ、負荷が遅れます。
怠zyなロードを使用するのはいつですか?怠zyなロードを使用したいときにのみ答えることができます。
怠zyなロードを使用する必要がある理由に関しては、アクセスしたいデータの量が大きすぎると、メモリ容量が制限されているため、キャッシュを使用するのには明らかに適していないことは明らかです。並行性の量を減らし、システムリソースの消費を減らすために、必要に応じてデータをロードしてから、怠zyなロードを使用します。
たとえば、従業員であるオブジェクトと部門である別のオブジェクトがあります。明らかに、従業員にとっては、それは部門と比較して多くの関係であり、部門にとっては、従業員と比較して1対多の関係です。従業員オブジェクトを照会すると、従業員オブジェクトのプロパティ部門を介して対応する部門を照会したい場合は、例外がスローされます。これは、怠zyな負荷が存在するためです。セッションが終了した後、Hibernateはデータベースに別の要求を発行し、例外がスローされます。
以下は、この問題を解決する4つの方法です。
1。明示的な初期化(クエリメソッド内)
従業員がどの部門に属しているかを尋ねるとき、あなたは部門を事前に追い出す必要があります
ステートメントを使用します
hibernate.initialize(department.class);
2。オブジェクト関係ファイルを変更し、怠zylazy = false、つまり密接な怠zyなロードを書き直します
上記の2つの方法は実際に問題を解決することができますが、欠点は、オブジェクトが後で使用されるかどうかに関係なく、HibernateがデータベースにSQLステートメントを発行してデータを要求し、不必要なパフォーマンス廃棄物を引き起こすことです。
3。フィルターを使用(Webプロジェクト)
sessionセッションを取得する方法は、getCurrentsessionを使用する必要があります
特別なクロージングセッションメソッド
public void dofilter(servletrequest request、servletresponse response、filterchain arg2)は、ioexception、servletexception {// todo auto-enerated method stub session = null;トランザクションTx = null; try {session = hibernateutil.getCurrentsession(); tx = session.begintransaction(); arg2.dofilter(request、response); // requestsは常にtx.commit(); } catch(例外e){// todo:例外を処理するif(tx!= null){tx.rollback(); }}最後に{//特別なクロージング方法hibernateutil.closecurrentsession(); }}4。SSHフレームワークでは、Springが提供するOpenSessionViewを使用してください
このフィルターがSpringによって提供されることを除いて、原理は3番目の方法でのフィルターの使用に似ています。それを使用する場合、次のようにWeb.xmlファイルで構成する必要があります。
<! - スプリングを使用して、怠zyなロードの問題を解決します - > <filter> <filter-name> opensessionInviewfilter </filter-name> <filter-class> org.sorm.hibernate3.support.opensessioninviewfilter </filter-class> </filter> <filter-name> <filter-name> opensessioninviewieffilter <url-pattern>/*</url-pattern> </フィルターマッピング>
3と4の方法は、怠zyな負荷の問題を解決することもでき、4番目の方法も現在より頻繁に使用されています。ただし、これらの2つの方法には欠点もあります。欠点は、セッションが閉じられ、セッションのライフサイクルが長くなる時間を延長することです。この方法を使用する前に、セッションはデータを照会した後に閉じられました。これで、セッションはWebリクエストの最後に閉じられます。
要約します
上記は、冬眠の怠zyな負荷の問題を解決する4つの方法についてのすべてです。私はそれが誰にでも役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!