Hibernate-interceptors
Hibernate-インターセプター
Hibernateで学習したように、オブジェクトが作成され、永続化されます。 オブジェクトを変更したら、データベースに保存する必要があります。 このプロセスは、オブジェクトが次に必要になるまで続き、永続ストアからロードされます。
したがって、オブジェクトはライフサイクルのさまざまな段階を通過し、 Interceptor Interface はメソッドを提供します。これらのメソッドはさまざまな段階で呼び出して、いくつかの必要なタスクを実行できます。 これらのメソッドは、セッションからアプリケーションへのコールバックであり、アプリケーションが保存、更新、削除、またはロードされる前に、永続オブジェクトのプロパティを検査および/または操作できるようにします。 以下は、Interceptorインターフェース内で使用可能なすべてのメソッドのリストです-
Sr.No. | Method & Description |
---|---|
1 |
findDirty() このメソッドは、Sessionオブジェクトで* flush()*メソッドが呼び出されたときに呼び出されます。 |
2 |
instantiate() このメソッドは、永続化されたクラスがインスタンス化されるときに呼び出されます。 |
3 |
isUnsaved() このメソッドは、オブジェクトが* saveOrUpdate()*メソッドに渡されたときに呼び出されます/ |
4 |
onDelete() このメソッドは、オブジェクトが削除される前に呼び出されます。 |
5 |
onFlushDirty() このメソッドは、オブジェクトがダーティであることをHibernateが検出したときに呼び出されます(つまり、 フラッシュ中に変更されました) 更新操作。 |
6 |
onLoad() このメソッドは、オブジェクトが初期化される前に呼び出されます。 |
7 |
onSave() このメソッドは、オブジェクトが保存される前に呼び出されます。 |
8 |
postFlush() このメソッドは、フラッシュが発生し、メモリ内のオブジェクトが更新された後に呼び出されます。 |
9 |
preFlush() このメソッドは、フラッシュの前に呼び出されます。 |
Hibernate Interceptorは、アプリケーションとデータベースの両方に対してオブジェクトがどのように見えるかを完全に制御します。
インターセプターの使用方法
インターセプターを作成するには、 Interceptor クラスを直接実装するか、 EmptyInterceptor クラスを拡張します。 以下は、Hibernate Interceptor機能を使用する簡単な手順です。
インターセプターを作成する
この例では、 Employee オブジェクトが作成および更新されたときにInterceptorのメソッドが自動的に呼び出されるEmptyInterceptorを拡張します。 要件に応じてより多くのメソッドを実装できます。
POJOクラスを作成する
さて、EMPLOYEEテーブルとEmployeeクラスを使用して遊んだ最初の例を少し変更しましょう-
データベーステーブルを作成する
2番目のステップは、データベースにテーブルを作成することです。 各オブジェクトに対応するテーブルが1つあり、永続性を提供します。 上記のオブジェクトを考慮し、次のRDBMSテーブルに格納および取得する必要があります-
マッピング構成ファイルの作成
この手順では、Hibernateに指示するマッピングファイルを作成します。定義されたクラスをデータベーステーブルにマップする方法です。
アプリケーションクラスを作成する
最後に、main()メソッドを使用してアプリケーションクラスを作成し、アプリケーションを実行します。 ここで、セッションオブジェクトの作成中に、Interceptorクラスを引数として使用したことに注意してください。
コンパイルと実行
上記のアプリケーションをコンパイルして実行する手順は次のとおりです。 コンパイルと実行に進む前に、PATHとCLASSPATHを適切に設定してください。
- 構成の章で説明されているように、hibernate.cfg.xml構成ファイルを作成します。
- 上記のように、Employee.hbm.xmlマッピングファイルを作成します。
- 上記のようにEmployee.javaソースファイルを作成し、コンパイルします。
- 上記のようにMyInterceptor.javaソースファイルを作成し、コンパイルします。
- 上記のようにManageEmployee.javaソースファイルを作成し、コンパイルします。 *ManageEmployeeバイナリを実行してプログラムを実行します。
次の結果が得られ、EMPLOYEEテーブルにレコードが作成されます。
あなたのEMPLOYEEテーブルをチェックする場合、それは次のレコードを持つ必要があります-