2015-05-04 135 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 。