2012-04-13 48 views
0

我一直在Google上搜索幾個小時,試圖找到如何編寫服務方法的示例,該方法在使用DAO接口時不使用Spring休眠模板。也讓我感到困惑的是當我將服務層中的註釋放入DAO時發生的情況。 服務方法/ DAO接口是可以互換的嗎?不使用休眠模板的服務方法

Here is an example where the @Transactional is in the DAO

Here is one with the @Transactional in the Service Layer but using hibernate templates

感謝您的幫助!

回答

2

Spring documentation建議完全避免的HibernateTemplate,和使用Hibernate的API,而不是直接:

注意:作爲休眠3.0.1的,事務的Hibernate訪問代碼可以 也可以以純的Hibernate風格編碼。因此,對於新開始的 項目,請考慮採用基於 SessionFactory.getCurrentSession()的標準Hibernate3風格編碼 數據訪問對象。

@Transactional註釋應該總是放在服務層的方法上。這是劃分交易的層。

閱讀http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/htmlsingle/spring-framework-reference.html#orm-session-factory-setup瞭解如何設置會話工廠。一旦完成,會話工廠可以在你的DAO注入:

@Repository 
public class MyDAO { 
    @Autowired 
    private SessionFactory sessionFactory; 

    ... 
} 
+0

謝謝,這幫助了很多,但我還是有點困惑的區別是服務方法和DAO的目的之間是什麼。你有可能給我一個機會(或指出我的方向)他們如何互相交流的例子? – dlinx90 2012-04-13 15:29:09

+0

閱讀此答案及其後的評論:http://stackoverflow.com/questions/8754840/best-way-to-develop-service-layer-in-java/8754873#8754873 – 2012-04-13 15:32:30

+0

這就是我正在尋找的信息!謝謝。關於調用多個DAO的服務層,我有一個後續問題。我會爲每個我希望執行的任務寫一個單獨的DAO嗎?另外我想知道一些話題,創建一個Dao然後一個DaoImplementation有什麼用處?謝謝! – dlinx90 2012-04-13 15:54:30