天天看點

資料庫通路層中使用GenericDao和HibernateDaoSupport

open source project:

  含有多個pojo實體,每一個pojo都要寫一個PojoDAO,非常乏味枯燥,思考有沒有一種通過的DAO能夠省去為每一個pojo寫一個DAO。

  GenericDao的目的是通過他來實作通用的資料庫通路層,它通過泛型來實作不同pojo也能夠使用一個GenericDao來進行通路,隻需要設定泛型的類型即可。首先來看一看GenericDao整體結構。

圖1:GenericDao結構圖

  今天給eclipse安裝了GreenUML這個eclipse插件,在eclipse中通過如下網址:http://www.cse.buffalo.edu/faculty/alphonce/green更新插件即可。GreenUML能夠根據代碼生成UML圖,是以我将GenericDao結構生成UML如下:

下面來解釋上面每一個類或者接口的使用者

GenericDao<T>:泛型接口,在這裡定義了Dao層的基礎的CRUD(Create, read, update and delete)方法,比如sava儲存執行個體,delete删除執行個體等等。

HibernateDaoSupport:這個是由spring提供的一個抽象類:org.springframework.orm.hibernate3.support.HibernateDaoSupport。類裡面定義了 HibernateTemplate的執行個體,是hibernate的ORM結構中最基礎的一個類。

HibernateGenericDao:這個類在我們的例子中沒有定義任何方法與變量,他的主要的用處是:(1)重寫(Override)HibernateDaoSupport 中定義的方法;(2)增加一些對HibernateDaoSupport類的補充。

GenericDaoImplHibernate<T>:這個類繼承HibernateGenericDao并實作接口GenericDao<T>

FileDao:資料通路層接口,根據需求定義方法。

FileDaoImpl:執行個體化的資料庫通路層接口FileDao,并繼承通用資料庫通路層的類。這樣如果FileDao中沒有定義方法,那麼就表明通用資料庫通路層GenericDaoImplHibernate已經能夠滿足需要。

  上面的結構圖看上去有點負責,其實是因為這樣的接口充分考慮了系統的可擴充性。如果不考慮可擴充性的話,那麼像FileDao、FileDaoImpl和HibernateGenericDao都可以去掉,直接讓GenericDaoImplHibernate<T>實作GenericDao<T>接口并繼承HibernateDaoSupport類就可以了。在後在使用的時候執行個體化Dao對象,比如:

根據GenericDao結構圖給出各個接口與類的代碼。

View Code

這個其實隻需要導入spring.jar包即可,不過這裡我還是貼出它的源代碼,以供參考

本文轉自xwdreamer部落格園部落格,原文連結:http://www.cnblogs.com/xwdreamer/archive/2011/12/25/2300986.html,如需轉載請自行聯系原作者