トランザクションと同時実行
1220 ワード
1.セッションとトランザクション範囲
sessionfactoryオブジェクトの作成にはコストがかかり、スレッドが安全なオブジェクトです.すべてのアプリケーション・スレッドを共有します.アプリケーションが起動したときにconfiguraionのインスタンスによって作成されるのは、一度だけ作成されます. sessionオブジェクトの作成コストは比較的小さく、非スレッドセキュリティであり、単一のリクエスト、単一のセッション、単一の作業ユニットでは1回しか使用されず、破棄されます.必要に応じて、1つのセッションオブジェクトのみがJDBCのconnectionオブジェクトを取得するため、使用しない場合はリソースを消費しません.
2.hibernateでのトランザクションの使用
JDBC自体は設計時、トランザクション機能を備えておらず、hibernateはJDBCを軽量級にカプセル化している.hibernateは、下位のJDBCtransactionまたはJTATransactionをカプセル化し、TransactionとSessionのハウジングを外に被せ、実際には下位のJDBCまたはJTAに依頼することでトランザクション機能を実現します.
hibernateでトランザクションを使用するには (1)次のようにトランザクションの開発を宣言します.
(2)hibernateでのJDBCトランザクションの使用
hibernateはセッション制御の下、データベース接続を確立すると、すぐに自動コミットモードをキャンセルします.すなわち、hibernateはセッションのbeginTransaction()メソッドを実行した後、JDBCレイヤのsettAutoCommit(false)メソッドを自動的に呼び出します.
(3)hibernateでのJTAトランザクションの使用
JTAには、UserTransactionインタフェース、TransactionManagerインタフェース、Transactionインタフェースの3つのインタフェースがあります.複数のデータベースを持つシステムでは、1つのプログラムがいくつかのデータベースのデータを呼び出す可能性があります.分散トランザクションが必要な場合や、Sessionにまたがる長いトランザクションをJTAで管理する準備ができている場合は、JTAトランザクションを使用する必要があります.
2.hibernateでのトランザクションの使用
JDBC自体は設計時、トランザクション機能を備えておらず、hibernateはJDBCを軽量級にカプセル化している.hibernateは、下位のJDBCtransactionまたはJTATransactionをカプセル化し、TransactionとSessionのハウジングを外に被せ、実際には下位のJDBCまたはJTAに依頼することでトランザクション機能を実現します.
Transaction t=session.beginTransaction();
t.commit();
t.rollback();
(2)hibernateでのJDBCトランザクションの使用
hibernateはセッション制御の下、データベース接続を確立すると、すぐに自動コミットモードをキャンセルします.すなわち、hibernateはセッションのbeginTransaction()メソッドを実行した後、JDBCレイヤのsettAutoCommit(false)メソッドを自動的に呼び出します.
(3)hibernateでのJTAトランザクションの使用
JTAには、UserTransactionインタフェース、TransactionManagerインタフェース、Transactionインタフェースの3つのインタフェースがあります.複数のデータベースを持つシステムでは、1つのプログラムがいくつかのデータベースのデータを呼び出す可能性があります.分散トランザクションが必要な場合や、Sessionにまたがる長いトランザクションをJTAで管理する準備ができている場合は、JTAトランザクションを使用する必要があります.