Hibernate-セッション
セッションは、データベースとの物理的な接続を取得するために使用されます。Sessionオブジェクトは軽量で、データベースとの対話が必要になるたびにインスタンス化されるように設計されています。永続オブジェクトは、Sessionオブジェクトを介して保存および取得されます。
セッションオブジェクトは通常スレッドセーフではないため、長期間開いたままにしないでください。必要に応じて作成および破棄する必要があります。セッションの主な機能は、マップされたエンティティクラスのインスタンスの操作を提供、作成、読み取り、および削除することです。
インスタンスは、特定の時点で次の3つの状態のいずれかに存在する可能性があります-
transient −セッションに関連付けられておらず、データベースに表現がなく、識別子値がない永続クラスの新しいインスタンスは、Hibernateによって一時的と見なされます。
persistent−一時インスタンスをセッションに関連付けることで、一時インスタンスを永続化できます。永続インスタンスには、データベース内の表現、識別子値があり、セッションに関連付けられています。
detached − Hibernateセッションを閉じると、永続インスタンスはデタッチされたインスタンスになります。
セッションインスタンスは、その永続クラスがシリアル化可能である場合、シリアル化可能です。一般的なトランザクションでは、次のイディオムを使用する必要があります。
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インターフェイスですが、このチュートリアルで使用するいくつかの重要なメソッドのみをリストします。関連するメソッドの完全なリストについては、Hibernateのドキュメントを確認できますSession そして SessionFactory。
シニア番号 | セッションの方法と説明 |
---|---|
1 |
Transaction beginTransaction() 作業単位を開始し、関連するトランザクションオブジェクトを返します。 |
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) 指定されたデタッチインスタンスの識別子で永続インスタンスを更新します。 |