2015-05-04 103 views
0

我有一个Spring RestController MyRestController,带有RequestMapping myMethod和自动装配的Spring Data Repository myRepository。在myMethod中,我调用了myRepository:myRepository.save(myEntity)和myRepository.findByMyProperty(...)。交易何时开始? (在myMethod调用之前的一个或每个myRepository方法调用之前的几个)?春季REST控制器交易

我很困惑这个问题。请有人能为我说清楚。

回答

1

According to the spring-data documentation:

在库实例CRUD方法是通过默认的事务。

所以你的save()方法是事务性的,只要你使用的CrudRepository一个子类。

你的查询方法不被默认的事务,该文件说:

为了让你的查询方法是事务性简单地定义库界面使用@Transactional

所以,你应该注释你的资料库:

@Transactional(readOnly = true) 
public interface MyRepository extends JpaRepository<My, Long> { 
    List<User> findByMyProperty(String myProperty); 
} 
0

的交易默认为每个myRepository方法调用之前开始,有关交易的完全控制,就调用库的方法,每个服务方法使用@Transactional 。