私は休止状態のチュートリアルを行っていましたが、すべてのダオでセッションを取得し、トランザクションを開始する必要があることに気付きました.すべての操作を実行してからコミットします
private void createAndStoreEvent(String title, Date theDate) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
//Perform operations...
session.getTransaction().commit();
}
次に、休止状態を使用するAppfuseというフレームワークに、以下に示すようにdaoメソッドがあることに気付きました.begintransactionとcommitが表示されません
public List<Person> findByLastName(String lastName) {
//begintransaction
return getHibernateTemplate().find("from Person where lastName=?", lastName);
//Commit
}
appfuse が session.beginTransaction() と session.getTransaction().commit(); で dao 操作をどのようにまとめているのだろうか。
この手法を使用することで、プログラマーはハイバネート トランザクションのことを気にする必要がなくなります。dao メソッドがオーバーライドされた場合でも、トランザクション ラッパー コードが自動的に来るような方法が必要です。dao をデコレータ クラスに渡し、dao メソッド呼び出しをデコレータ クラス内にラップしようとしましたが、dao インターフェース メソッドが変更されるため、アイデアがうまくいきませんでした。