2014-03-05 44 views
1

我正在使用只讀數據庫來獲取一些數據到我的項目中。我們使用jpa和hibernate的Spring v3@JpaRepository上的事務

以下注釋是否會將對我的存儲庫的所有調用都變爲只讀事務?或者我需要服務層調用庫

package com.blah.jpa; 

import org.springframework.data.jpa.repository.JpaRepository; 
import org.springframework.transaction.annotation.Transactional; 

@Transactional(readOnly = true) 
public interface ServiceToServerRepository extends JpaRepository<ServiceToServerJPA, String> { 

} 

所以我們上標註的所有findOne,的findAll是免費的。但任何更新應該失敗,因爲它是隻讀事務

回答

4

這應該基本上這樣做。但我通常選擇使用Transactional註釋標記服務層工件。無論如何,請同時查看這篇文章以獲取有關使用Spring Data的交易性的更多信息:How to use @Transactional with Spring Data?

3

readOnly標誌只在調用方法時暗示它只用一個只讀事務就足夠了。

如果您的服務層中嵌套的事務不是隻讀的,那麼它將使用該事務,並且您將有效地忽略此註釋。