4

アプリケーションで Spring Hibernate 統合を使用しており、DAO クラスが拡張されていますHibernateDaoSupport。コードgetHibernateTemplate().save(object) Using hibernate template I don't need to commit the transaction を使用してオブジェクトを保存するとします。どの時点でデータがコミットされるのか知りたいです。

以下のコードスニペットを検討してください

public void saveObject(){
   .......
   getHibernateTemplate().save(object1);
   ....
   ....
   getHibernateTemplate().save(object2);
 }

上記のコードでは、正確にどの時点でobject1DBに挿入されますか..getHibernateTemplate().save(object1);メソッドの後または最後に?

4

3 に答える 3

0

これは、トランザクション マネージャーの構成やフラッシュ モードの設定によって異なります。 http://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/FlushMode.html

于 2012-08-24T22:09:24.473 に答える
0

You should use this:

  @Override
    public void addAccount(Account account) {

        hibernateTemplate.getSessionFactory().getCurrentSession().beginTransaction();
        hibernateTemplate.saveOrUpdate(account);
        hibernateTemplate.getSessionFactory().getCurrentSession().getTransaction().commit();
    }
于 2014-01-16T15:15:04.797 に答える
0

どちらでもない。

デフォルトの構成では、insertステートメントは実行可能な最後の瞬間に実行されます。つまり、休止状態はトランザクションの終わりまで、またはその他のポイント (flushコマンドがある場合は、他の選択コマンド....) までそれらを保持します。

しかし、コミットはこれにまったく依存しません。コミットは、あなた (または Spring!) がトランザクションをコミットしたときに発生します。トランザクションをどのように管理するかによって異なりますが、Spring の宣言型トランザクション管理を使用している場合は、どのメソッドがトランザクション属性を持ち、どの属性を取得するかが重要です。

于 2014-01-16T15:27:21.727 に答える