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()。还要记住,如果需要,它可能会在事务中间自动刷新会话。你没有明确地调用flushsession。顺便说一句,显式调用刷新会话的原因是什么。This flush session in the middle of transaction - 关于此主题的相关问题

于 2015-12-02T14:43:13.157 回答