基於JAVA泛型實現通用DAO的CURD操作?

Tags: 物件, 泛型,

使用JAVA開發企業應用都會涉及到物件的持久化操作,為了降低業務邏輯操作的耦合度,通常需要建立大量的DAO物件。DAO物件主要功能就是實現C(建立)U(更新)R(讀取)D(刪除)操作。在設計過程中我們常常需要花費大量的時間重複定義上述的方法。那麼有沒有一種設計,可以減少這些重複copy和paste呢,這就是我要給大家分享的內容。利用JDK5引入的泛型語法,實現一個通用的DAO物件,充分提交程式碼的複用性。下面DAO的實現以Hiberante為ORM框架,當然也適用於JPA等其他ORM框架。

工具/原料

IntelliJ IDEA 13

JDK5+

Hibernate

方法/步驟

BaseDAO介面的定義一

通常一個DAO最基本的操作就是實現物件的儲存、修改、查詢、刪除。因此我們在BaseDAO介面定義以下方法:

基於JAVA泛型實現通用DAO的CURD操作

基於JAVA泛型實現通用DAO的CURD操作

BaseDAO介面的定義二

一個完整的業務不僅僅是對某個物件的CURD操作,通常我們還需要獲取物件列表或者有條件的獲取物件的列表,並對列表排序或者分頁操作,因此我們還需要定義下面的方法:

基於JAVA泛型實現通用DAO的CURD操作

分頁物件的定義

分頁功能在開發企業應用過程中是非常常見的。常常需要對一個很長的頁面進行分頁顯示。因此將分頁功能單獨抽象成一個Bean是很有必要的。

基於JAVA泛型實現通用DAO的CURD操作

BaseDAO的實現

介面定義完了,下面需要實現介面中所有的方法了。首先建立一個AbstractBaseDaoImpl物件,實現BaseDAO

基於JAVA泛型實現通用DAO的CURD操作

接著我們需要通過反射獲取當前是哪個實體類,這一步很重要。我們通過泛型定義代替了原來的實體類物件,在某些操作裡我需要知道我們到底操作的是哪個實體類物件,因此我們定義一個clazz私有屬性,並通過反射獲取這個實體類物件。

基於JAVA泛型實現通用DAO的CURD操作

實現第一步中的CURD操作。

基於JAVA泛型實現通用DAO的CURD操作

實現第二步的查詢操作。

基於JAVA泛型實現通用DAO的CURD操作

基於JAVA泛型實現通用DAO的CURD操作

基於JAVA泛型實現通用DAO的CURD操作

好了到現在我們的通用DAO的設計就大功告成了。下面來演示一下如何使用。我們只需要直接繼承BaseDAO和AbstractBaseDaoImpl就可以擁有所有的方法了。是不是很簡單呀。

基於JAVA泛型實現通用DAO的CURD操作

基於JAVA泛型實現通用DAO的CURD操作

基於JAVA泛型實現通用DAO的CURD操作

相關問題答案