2

大規模なエンタープライズ アプリケーションの開発を計画しているとします。このような場合、次の最善の方法は何ですか。

a) リクエストごとまたはユーザーごとの Hibernate セッションの数?
b) アプリケーションで許可されるトランザクションの数は?
c) 接続プーリングと休止状態セッションの関係?
d) Hibernate セッションと JTA トランザクションの関係は?
e) Number of Hibernate Session はパフォーマンスを低下させますか? はいの場合、その理由は何ですか?

4

2 に答える 2

1

a) 単一のデータベースの場合、作成できるセッション ファクトリは 1 つだけで、任意の数のセッションを作成できます。

b) データベース (またはシステム) のトランザクション境界は常に必要です。データベースとの通信は、データベース トランザクションの外では発生しません (これは、自動コミット モードに慣れている多くの開発者を混乱させるようです)。読み取り専用操作であっても、常に明確なトランザクション境界を使用してください。分離レベルとデータベースの機能によっては、これが必要ない場合もありますが、トランザクションを常に明示的に区別する場合、マイナス面はありません。ただし、EXTENDED 永続化コンテキストで変更を保持する必要がある場合は、トランザクションの外部で操作を行う必要があります。

c) 休止状態のセッションは、SQL を直接記述せずに POJO を保存できるようにするための接続のラッパーです。

休止状態のセッションは、接続のラッパーです。接続は接続プールに保持されます。

SessionFactory.openSession hibernate を呼び出すと、最初に提供された接続プールから接続が取得されます。次に、その Connection の周りに Session を作成し、それを返します。

于 2013-10-09T05:49:53.293 に答える