0

Hibernate のセッション フラッシュに対する私の誤解かもしれませんが、サービス内でセッションをフラッシュすることを考えていましたが、サービスで次のようなことを行うのは問題ありません。

public Object serviceMethod(Object model){

    //Do things with model
    sessionFactory.getCurrentSession().flush();

}

私のサービスは私の持続メカニズムを知っているので、それは間違っていると感じます.

そこで、アスペクトを作成してアノテーションを使用することを考えていたので、コードは次のようになります。

@FlushAfter
public Object serviceMethod(Model model){
    //Do things with model
}

このアプローチは正しいですか、それとも間違った方法でやっていますか?

4

2 に答える 2

1

トランザクション インターセプターによって既に自動的に行われているため、これを行う必要はありません。デフォルトでは、Hibernate セッションは、トランザクションがコミットされる前に自動的にフラッシュされます。そのため、サービスがトランザクション対応である場合 (Hibernate で動作するようにする必要があります)、セッションは自動的にフラッシュされます。

于 2012-10-16T20:56:17.423 に答える
0

トランザクション インターセプター/マネージャーは、トランザクションの最後に session() をフラッシュすることを決定する場合があります。また、必要に応じて、トランザクションの途中でセッションを自動的にフラッシュする場合があることにも注意してください。明示的にフラッシュセッションを呼び出す必要はありません。ところで、フラッシュ セッションを明示的に呼び出す理由は何ですか。トランザクションの途中でのこのフラッシュ セッション- このトピックに関する質問

于 2015-12-02T14:43:13.157 に答える