DAO :
這部份開始前可以先參照之前建立的 User 物件,通常在撰寫 User 物件的新增、修改、刪除功能會抽離為兩個部份。為了增加程式上的彈性通常會定義出功能的介面與實作兩個部份,讓應用程式只知道介面部份,而實作部份就可根據不同狀況下調整程式,現在針對它來建立 DAO 介面部份。首先將 DAO 會擁有的 Method 列出,如下圖:接著實作 UserDAO,針對每個 Method 定義出實際內容,如下圖:
上面我們將每個 Method 都一一實作出來,這邊記得必須使用 sessionFactory.getCurrentSession( ) 來運作。另外須注意一點,範例中 find 方法為 sessionFactory.getCurrentSession( ).load( ) ,Hibernate 有提供另一種方法 sessionFactory.getCurrentSession( ).get( ),其中差異請至 Hibernate 官方文件參考。
Service :
DAO 部份設定好後,我們還需要 Service 來提供服務。Service 定義的部份也是抽離為介面與實作兩個部份,Service 介面如下:接著實作 UserService,內容如下:
這邊使用剛剛定義的 UserDAO,並且透過 @Service 標註此 Class 為 Service 元件。@Transactional 可針對此 Class 或 Method 附加上交易的管理。
Transaction Manager :
剛剛看到 Service 實作裡面有 @Transactional 的 Annotation,因此我們要在 Spring 設定檔裡宣告 Transaction Manager 以及其屬性。不過在設定 Transaction Manager 之前,我們還需要 AOP 的 Library 以及 aspectjweaver JAR檔 ( 搜尋 aspectjweaver 取得最新版本 ),放置於 /WebContent/WEB-INF/lib 底下。Transaction Manager 於 Spring 設定檔 ( 如範例 mercury-servlet.xml ) 內容如下:
如此一來 Transaction Manager 基本上設定好了,Transaction 預設為發生 RuntimeException 時會 Roll Back,但如果想要指定某些特定的 Exception 發生時 Roll Back 或不 Roll Back。因此這自訂動作就需要運用到我們剛剛加入的 AOP 部份,詳細可以參考官方說明文件。
接著我們在 Controller 建立基本資料存取的範例,首先查詢資料範例內容如下:
新增資料範例如下:
刪除資料範例如下:
如此一來 Spring MVC CRUD 的基本功能都建立完成了。其他 Spring Framework 相關教學可以參考本篇整理。
接著我們在 Controller 建立基本資料存取的範例,首先查詢資料範例內容如下:
新增資料範例如下:
刪除資料範例如下:
如此一來 Spring MVC CRUD 的基本功能都建立完成了。其他 Spring Framework 相關教學可以參考本篇整理。