1

これらのアプローチの違いは何ですか?どちらが優れていますか?今まで私は次のようなコードを持っています:

public void delete(Song song) {
    session = sessionFactory.getCurrentSession();
    session.delete(song);
    session.flush();
}

ただし、上記のコードを実行すると、レコードが常に削除されるわけではありません(正確には、id = 1が削除されることはなく、他のIDは常に削除されます)。セッションを開いたままにしておくと、アプリケーションが少し高速化されることを読みました。そのため、セッションオブジェクトを共有しています。私のビジネスオブジェクトは、DIを介してセッションファクトリを取得します。

@Autowired
private SessionFactory sessionFactory;

Session session = null;

public void setSessionFactory(SessionFactory sessionFactory) {
    this.sessionFactory = sessionFactory;
}
4

1 に答える 1

2

Hibernateでの経験に基づいて、最良の戦略はHibernateセッションの寿命を単一のトランザクションの期間と一致させることであるという結論に達しました。あなたの特定のニーズに基づいて、あなたは何か他のことをしなければならないかもしれません、しかし私は提案された戦略が実際のケースの95%でうまくいくと思います。

于 2013-03-06T20:12:53.730 に答える