Hibernateでのセッションは、プロセスレベル(スレッドバー)キャッシュとして理解できます。これは、プロセス(スレッドバー)の実行中に存在します。
セッションは、データベースを操作できるオブジェクトとして理解することができ、このオブジェクトでデータベースを操作する方法があります。
Javaでは、通常、キャッシュとは、Javaオブジェクトのプロパティ(通常はいくつかのコレクション型属性)が占めるメモリ空間を指します。一連のJavaコレクションは、セッションインターフェイスの実装クラスSessionImplで定義されており、これらのJavaコレクションはセッションキャッシュを形成します。
一般的に(セッションの私の理解):セッションは、冬眠とDBの間の仲介者(オブジェクト)です。セッションには2つのことと機能があります。
(1)データベースを操作する方法
(2)セッションにはいくつかの属性(セットなど)があります。これらの属性は、これらの属性を使用してDBに送信されるSQL言語を保存し、DBから見つかったデータをキャッシュします。
セッションキャッシュ
セッションキャッシュは、一連のJavaコレクションで構成されています。オブジェクトがセッションキャッシュに追加されると、このオブジェクトへの参照がJavaコレクションに追加されます。将来的には、セッションキャッシュがクリアされていない限り、アプリケーションの参照変数がオブジェクトを参照しなくても、オブジェクトはライフサイクルにとどまります。
セッションキャッシュの役割:
1)データベースにアクセスする頻度を減らします。
2)キャッシュ内のオブジェクトが、データベース内の関連レコードと同期して保持されていることを確認します。
セッションでキャッシュをクリーニングする時間:
1)commit()トランザクションの方法が呼び出されると、commit()メソッドは最初にキャッシュ(flushmode.commit/autoを条件)をクリーニングし、次にトランザクションをデータベースに送信します。
2)アプリケーションがセッションのfind()またはiterate()を呼び出すと、キャッシュの永続オブジェクトのプロパティが変更された場合、クエリの結果が永続オブジェクトの最新のステータスを反映できるようにキャッシュを最初にクリーニングします。
3)アプリケーションがセッションのflush()メソッドを表示すると呼び出されます。
セッションクリーンアップモードがクリーンアップキャッシュ操作を実行する時点:
セッションインターフェイス
セッションインターフェイスは、データベースを操作するためのアプリケーションに冬眠によって提供される最も重要なインターフェイスです。保存、更新、削除、およびクエリするための基本的な方法を提供します。
1.Save():キャッシュに一時オブジェクトを追加すると、永続的なオブジェクトになります
- >マッピングファイルで指定された主要なキージェネレーターを選択して、一意のOIDを永続的なオブジェクトに割り当てる
- >パラメーターオブジェクトの現在のプロパティ値を挿入ステートメントに組み立てるための挿入ステートメントを計画しますが、Save()メソッドはSQLINSERTステートメントをすぐに実行せず、セッションがキャッシュを浄化するときにのみ実行されます。
- > save()メソッドの後に永続オブジェクトのプロパティが変更された場合、セッションはキャッシュをクリーニングするときに追加のsqlupdateステートメントを実行します。
注:save()メソッドは、一時的なオブジェクトを持続するために使用されます!
save()メソッドに永続的なオブジェクトを渡すと、操作は実行されません、冗長な手順
自由状態オブジェクトがSave()メソッドに渡されると、セッションはそれを一時的なオブジェクトとして処理し、レコードを再びデータベースに挿入しますが、これはビジネスニーズを満たしていません!
2。更新():顧客オブジェクトをセッションキャッシュに再び添加し、永続的なオブジェクトに変えます。
--->更新ステートメントをスケジュールします。これは、キャッシュがクリーニングされたときにのみ実行され、パラメーターオブジェクトの属性値が実行されたときに更新ステートメントに組み立てられます。
注:update()は、自由オブジェクトを永続的なオブジェクトに変換します。
フリーオブジェクトが更新()メソッドを介したセッションに関連付けられている限り、セッションは、キャッシュをクリーニングするときに更新メソッドによって計画された更新ステートメントを実行します。
3.SaveOrUpDate():Save()とupdate()メソッドの関数の両方が含まれています。渡されたパラメーターが一時オブジェクトの場合は、保存方法を呼び出します。パラメーターが無料オブジェクトの場合は、更新()メソッドを呼び出します。渡されたパラメーターが永続的なオブジェクトである場合、直接返します。
4.load()/get():指定されたOIDに基づいてデータベースから永続的なオブジェクトをロードします。違いは、データベース内のOIDに対応するレコードがない場合、Load()メソッドがObjectNotFoundExceptionの例外をスローし、get()メソッドがnullを返すことです。
5.delete():データベースのパラメーターオブジェクトに対応するレコードを削除するために使用されます。渡されたパラメーターが永続的なオブジェクトである場合、セッションは削除ステートメントを実行する予定です。渡されたパラメーターがフリーオブジェクトである場合、最初にセッションに関連付けられたフリーオブジェクトを作成して永続的なオブジェクトにし、次にキャッシュをクリーニングするときに実行する削除ステートメントを計画します。
6.Evict():キャッシュからパラメーターで指定された永続オブジェクトをクリアします。
適用可能な機会:オブジェクトの状態に応じて、セッションがデータベースを同期し続けていないようにしたくありません。
バッチの更新またはバッチ削除の場合、オブジェクトが更新または削除されると、オブジェクトが占めるメモリが時間内にリリースされます。もちろん、バッチ操作はJDBCを優先します。
7.Clear():キャッシュ内のすべての永続オブジェクトをクリアします。
要約します
上記は、Hibernateのセッションのコンテンツ全体をすばやく理解していることであり、すべての人に役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!