Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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 Spring@Transactional是如何工作的?_Java_Spring_Hibernate - Fatal编程技术网

Java Spring@Transactional是如何工作的?

Java Spring@Transactional是如何工作的?,java,spring,hibernate,Java,Spring,Hibernate,问题是我是否必须在DAO类中的每个CRUD方法中包含@Transactional 因此,我在一个方法中添加了一个注释,该注释会导致此异常,但其他方法不会导致此异常。这是因为其他方法很简单,并且执行不会占用太多时间吗?一般规则:将@Transaction注释添加到启动(和完成)工作单元的方法中。这是您的程序中应该在on事务中处理的部分(意味着它应该完全完成/保存,或者根本不保存) 在设计理想的web应用程序中,将@Transaction注释放置在控制器调用的服务处。 在另一个不太理想的web应用程

问题是我是否必须在DAO类中的每个CRUD方法中包含
@Transactional


因此,我在一个方法中添加了一个注释,该注释会导致此异常,但其他方法不会导致此异常。这是因为其他方法很简单,并且执行不会占用太多时间吗?

一般规则:将
@Transaction
注释添加到启动(和完成)工作单元的方法中。这是您的程序中应该在on事务中处理的部分(意味着它应该完全完成/保存,或者根本不保存)

在设计理想的web应用程序中,将
@Transaction
注释放置在控制器调用的服务处。
在另一个不太理想的web应用程序中,控制器调用多个服务方法(并且必须在同一事务中处理这两个服务方法),您必须将
@transaction
注释放置在控制器方法处。

理想情况下,最好在每个服务/dao级别的方法中使用@Transactional,并明确说明它是否为只读(默认值为false)。另外,您可能想看看为什么有些方法会导致异常,而有些方法不会导致异常?每个Spring开发人员都需要不时阅读:)您可以阅读这个。这个问题已经被多次讨论过了