だけ

2012-04-17 5 views
1

にHibernateセッションを通じてエンティティをロードし、トランザクション境界をマークせず:だけ

私は、エンティティと言ったSession.loadを(ロード)し、それをcomittingトランザクション&を開始せずにセッション を閉じた場合(何が間違っている)何が起こる

私はさまざまなサイトを訪れましたが、説明が見つかりませんでした。

+0

私はそれが有効な質問だと思います。それを投票するのではなく、親切に答えるか、何かが間違っていたら私を修正してください。 – krishna

+0

リンク:https://community.jboss.org/wiki/OpenSessionInView – krishna

+0

トランザクションを開始せずにセッションから永続エンティティをロードするのは正しいですか(session.beginTransaction)。私はセッションを閉じた後、そのプールにjdbc接続を返します。注意:transaction.commit()では、jdbc接続がプールに返されます。また、view-Lazyの読み込みに役立つオープンセッション(トランザクションコミット)を保つことができます。 – krishna

答えて

0

それが正しいトランザクションを開始せずにセッションから永続エンティティをロードすることです(session.beginTransactionは)

はい。大丈夫ですが、DBからデータをフェッチするときに、休止状態が更新クエリを起動して汚れデータをフラッシュしなければならないことがあります。そのため、DB関連のすべてのアクティビティをトランザクション内で実行することをお勧めしました。トランザクションを使用した場合

  1. は、トランザクションを開始し、怒鳴るの手順に従ってください。
  2. DBアクティビティ(選択/更新)を行います。
  3. トランザクションを閉じます。

ビューの遅延読み込みに役立つオープンセッション(トランザクションコミット)を維持できますか?

これは可能ですが、それは良いアプローチではありません。同時ユーザー数が多い場合は、パフォーマンス上の問題が深刻になります。