10

私は Nhibernate を初めて使用するので、私のクエリは些細なことに思えるかもしれません。

通常、データ操作コードを内部に埋め込みます

  using (var session = sessionFactory.OpenSession())
  {
    using (var transaction = session.BeginTransaction())
    {
       ...Code for CRUD operations
       transaction.Commit();
    }
  }

通常、データの保存/更新/削除には BeginTransaction/Commit/Rollback を使用するため、

またはを使用してデータを取得している場合でも 、BeginTransaction()およびが必要なのだろうか Commit()session.Get<T>(id);session.CreateCriteria<T>().List();

ガイドしてください。

ありがとうございました!

4

2 に答える 2

6

No, you can't do data retrieval without transaction; all NH operations are transaction-centric.

Read this article by Ayende Rahien.

于 2009-10-27T10:25:44.937 に答える
3

クエリでは常にトランザクションを使用する必要があります。パフォーマンスだけでなく、並行性の理由についても、Ayende 氏は述べています。

彼の Hibernate プロファイラーは、トランザクション スコープではないクエリを使用すると警告を表示します。

于 2009-10-27T11:17:00.793 に答える