Java Spring@Transactional是如何工作的?
问题是我是否必须在DAO类中的每个CRUD方法中包含Java Spring@Transactional是如何工作的?,java,spring,hibernate,Java,Spring,Hibernate,问题是我是否必须在DAO类中的每个CRUD方法中包含@Transactional 因此,我在一个方法中添加了一个注释,该注释会导致此异常,但其他方法不会导致此异常。这是因为其他方法很简单,并且执行不会占用太多时间吗?一般规则:将@Transaction注释添加到启动(和完成)工作单元的方法中。这是您的程序中应该在on事务中处理的部分(意味着它应该完全完成/保存,或者根本不保存) 在设计理想的web应用程序中,将@Transaction注释放置在控制器调用的服务处。 在另一个不太理想的web应用程
@Transactional
因此,我在一个方法中添加了一个注释,该注释会导致此异常,但其他方法不会导致此异常。这是因为其他方法很简单,并且执行不会占用太多时间吗?一般规则:将
@Transaction
注释添加到启动(和完成)工作单元的方法中。这是您的程序中应该在on事务中处理的部分(意味着它应该完全完成/保存,或者根本不保存)
在设计理想的web应用程序中,将@Transaction
注释放置在控制器调用的服务处。
在另一个不太理想的web应用程序中,控制器调用多个服务方法(并且必须在同一事务中处理这两个服务方法),您必须将
@transaction
注释放置在控制器方法处。理想情况下,最好在每个服务/dao级别的方法中使用@Transactional,并明确说明它是否为只读(默认值为false)。另外,您可能想看看为什么有些方法会导致异常,而有些方法不会导致异常?每个Spring开发人员都需要不时阅读:)您可以阅读这个。这个问题已经被多次讨论过了