2013-04-16 98 views
2

我正在開發我的課程結論作品(最終畢業作品)。 我們只在Spring MVC和Glassfish應用服務器上使用Java。我們不會使用Hibernate或JPA,因爲我們將在MS SQL Server 2008中使用存儲過程,因此JDBC似乎是調用它們的最有效方法(因爲據我所知,我無法將對象作爲一個參數給SQL Server)。我們已經在Glassfish上配置了數據源池。我們知道我們需要一個DAO來調用SQL Server的過程。我的問題是:我需要一個服務對象嗎?

1-)我需要(或最佳實踐)使用Service對象(正確註釋爲@Service)來調用DAO方法嗎?或者我可以直接從控制器調用DAO方法?

2-)從DataSource獲取連接的最佳方式是什麼?每個DAO都有一個帶有getConnection方法或ds.getConnection()的分離類?

感謝

回答

1

我傾向於瘦朝向具有服務層是以下兩個原因的最大原因...

  1. 標記方法爲@Transactional所以這一切的方法中的DAO請求發生在一筆交易中。

  2. 我可以增加從DAO和用戶角色關注的分離。我可以將方法標記爲需要某些用戶角色,因此它與Spring Security非常吻合。

你可以從控制器調用一個DAO,但如果你想稍後擴展,它會讓你卡住。要獲得連接,您可以使用@Transactional標記服務,並將DAO作爲@Repository,Spring將處理整個獲取會話對象和注入等。

我傾向於認爲(也許不正確)服務層作爲一個可以訪問的門面,無論是來自Web服務還是控制器或任何其他服務,它都會保持分離。

0

是的,所有的手段都是從控制器調用dao/repository,否則你會結束創建一堆不必要的類。 Spring使得易事需要新的,以便事務如果尚不存在就被創建。

使用a 服務多個 DAO /商業實體涉及一個單位的工作/業務邏輯。爲簡單的獲取者創建服務類沒有意義。

相關問題