SSH中DAO層抽取

Background:

  1. HibernateTemplate開發dao層。
  2. 每個業務對象都具有CRUD操作

最初實現

最初爲每個業務對象開發相應的DaoImpl,自然出現大量重複代碼,想要抽取到一個BaseDao中,以實現代碼重用性和整潔度

實現思路

每個業務對象DaoImpl的不同之處唯在於其業務對象,比如,查詢Customer時,就傳入Customer.class 。完成向上抽取,最好的辦法就是創建泛型父類,傳入的業務對象的類對象由運行時判斷。

public class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T> {

    private Class clazz;//用於接收運行期泛型類型

    public BaseDaoImpl() {
        //此處this是BaseDao子類構造調用,獲得當前類型的帶有泛型類型的父類
        ParameterizedType ptClass = (ParameterizedType) this.getClass().getGenericSuperclass();
        //獲得運行期的泛型類型
        clazz = (Class) ptClass.getActualTypeArguments()[0];
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章