Hibernate-sessions
Hibernate-セッション
セッションは、データベースとの物理的な接続を取得するために使用されます。 Sessionオブジェクトは軽量で、データベースとの対話が必要になるたびにインスタンス化されるように設計されています。 永続オブジェクトは、Sessionオブジェクトを介して保存および取得されます。
セッションオブジェクトは、通常はスレッドセーフではないため、長時間開いたままにしないでください。また、必要に応じて作成および破棄する必要があります。 セッションの主な機能は、マップされたエンティティクラスのインスタンスの操作を提供、作成、読み取り、および削除することです。
インスタンスは、特定の時点で次の3つの状態のいずれかに存在する場合があります-
- transient -Sessionに関連付けられておらず、データベース内に表現がなく、Hibernateによって識別子値が一時的であると見なされない永続クラスの新しいインスタンス。
- persistent -Sessionに関連付けることで一時的なインスタンスを永続化できます。 永続インスタンスは、データベース内の表現、識別子の値を持ち、セッションに関連付けられます。
- detached -Hibernate Sessionを閉じると、永続インスタンスは切り離されたインスタンスになります。
永続クラスがシリアル化可能な場合、Sessionインスタンスはシリアル化可能です。 典型的なトランザクションは、次のイディオムを使用する必要があります-
Session session = factory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
//do some work
...
tx.commit();
}
catch (Exception e) {
if (tx!=null) tx.rollback();
e.printStackTrace();
} finally {
session.close();
}
セッションが例外をスローした場合、トランザクションをロールバックし、セッションを破棄する必要があります。
セッションインターフェイスメソッド
*Session* インターフェースによって提供されるメソッドは多数ありますが、このチュートリアルで使用するいくつかの重要なメソッドのみをリストアップします。 *Session* および *SessionFactory* に関連付けられたメソッドの完全なリストについては、Hibernateのドキュメントを確認できます。
Sr.No. | Session Methods & Description |
---|---|
1 |
Transaction beginTransaction() 作業単位を開始し、関連するTransactionオブジェクトを返します。 |
2 |
void cancelQuery() 現在のクエリの実行をキャンセルします。 |
3 |
void clear() セッションを完全にクリアします。 |
4 |
Connection close() JDBC接続を解放してクリーンアップすることにより、セッションを終了します。 |
5 |
Criteria createCriteria(Class persistentClass) 特定のエンティティクラスまたはエンティティクラスのスーパークラス用に、新しいCriteriaインスタンスを作成します。 |
6 |
Criteria createCriteria(String entityName) 指定されたエンティティ名に対して、新しいCriteriaインスタンスを作成します。 |
7 |
Serializable getIdentifier(Object object) このセッションに関連付けられている特定のエンティティの識別子値を返します。 |
8 |
Query createFilter(Object collection, String queryString) 指定されたコレクションとフィルター文字列に対してQueryの新しいインスタンスを作成します。 |
9 |
Query createQuery(String queryString) 指定されたHQLクエリ文字列に対してQueryの新しいインスタンスを作成します。 |
10 |
SQLQuery createSQLQuery(String queryString) 指定されたSQLクエリ文字列に対してSQLQueryの新しいインスタンスを作成します。 |
11 |
void delete(Object object) データストアから永続インスタンスを削除します。 |
12 |
void delete(String entityName, Object object) データストアから永続インスタンスを削除します。 |
13 |
Session get(String entityName, Serializable id) 指定された識別子を持つ指定された名前付きエンティティの永続インスタンスを返します。そのような永続インスタンスがない場合はnullを返します。 |
14 |
SessionFactory getSessionFactory() このセッションを作成したセッションファクトリを取得します。 |
15 |
void refresh(Object object) 基盤となるデータベースから特定のインスタンスの状態を再読み取りします。 |
16 |
Transaction getTransaction() このセッションに関連付けられたトランザクションインスタンスを取得します。 |
17 |
boolean isConnected() セッションが現在接続されているかどうかを確認します。 |
18 |
boolean isDirty() このセッションには、データベースと同期する必要がある変更が含まれていますか? |
19 |
boolean isOpen() セッションがまだ開いているかどうかを確認します。 |
20 |
Serializable save(Object object) 最初に生成された識別子を割り当てて、指定された一時インスタンスを永続化します。 |
21 |
void saveOrUpdate(Object object) 指定されたインスタンスをsave(Object)またはupdate(Object)します。 |
22 |
void update(Object object) 指定された分離インスタンスの識別子で永続インスタンスを更新します。 |
23 |
void update(String entityName, Object object) 指定された分離インスタンスの識別子で永続インスタンスを更新します。 |