Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 服务业的冲水期_Java_Hibernate - Fatal编程技术网

Java 服务业的冲水期

Java 服务业的冲水期,java,hibernate,Java,Hibernate,也许这是我对Hibernate会话刷新的误解,但我一直在考虑在我的服务中刷新会话,但在服务中这样做感觉不好: public Object serviceMethod(Object model){ //Do things with model sessionFactory.getCurrentSession().flush(); } 感觉不对,因为我的服务将了解我的持久性机制 因此,我一直在考虑制作一个方面并使用注释,因此我的代码如下所示: @FlushAfter publi

也许这是我对Hibernate会话刷新的误解,但我一直在考虑在我的服务中刷新会话,但在服务中这样做感觉不好:

public Object serviceMethod(Object model){

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

}
感觉不对,因为我的服务将了解我的持久性机制

因此,我一直在考虑制作一个方面并使用注释,因此我的代码如下所示:

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

这种方法是正确的还是我做得不对?

没有必要这样做,因为它已经由事务拦截器自动完成:默认情况下,在事务提交之前会自动刷新Hibernate会话。因此,如果您的服务是事务性的(使用Hibernate应该是这样),会话将自动刷新。

事务侦听器/管理器可能会在事务结束时决定刷新会话()。还请记住,如果需要,它可以在事务的中间自动刷新会话。您没有显式地调用flushsession。顺便问一下,显式调用flush会话的原因是什么。 这个问题与这个话题有关