DAO層指南
1.概述
SpringSide的DAO層兩個特點:
1.DAO層與Business層合并,且省略DAO接口,用cglib方式實現(xiàn)AOP事務(wù)控制。
2.基于范型的強基類,普通DAO類只要用聲明所要管理的Entity類型即擁有完整的CRUD操作。
結(jié)果就是,普通的Manager類只有一個文件,數(shù)行代碼。
同時,當邏輯比較復(fù)雜,Manager類比較龐大時,可以內(nèi)部重構(gòu)拆分為Dao與Manager,但這個重構(gòu)行為是內(nèi)部的,不造成影響的。因為其他類調(diào)用的始終是Manager。
2. HibernateGenericDao
SpringSide 在Spring HibernateDaoSupport基礎(chǔ)上封裝的DAO,功能如下:
1.應(yīng)用范型,使得find(), get() 這些函數(shù)不再返回Object,不再需要強制類型轉(zhuǎn)換。
2.提供各種finder的簡便函數(shù)
應(yīng)用了JDK5可變參數(shù)的hsql查詢函數(shù):List find(String hql, Object... s)
簡單查詢的簡化函數(shù):findBy(Class entityClass,String name,Object ) ,findUniqueBy(Class entityClass,String name, Object ),findByLike(Class entityClass,String name,Object )
3.分頁函數(shù):Page pagedQuery(Criteria criteria, int pageNo, int pageSize) /Page pagedQuery(String hql, int pageNo, int pageSize, Object... args) 。
4.判別對象屬性在數(shù)據(jù)庫中唯一的函數(shù):isNotUnique(entityClass, Object entity, String names)。
3. HibernateEntityDao
所有UserManager, ProductManager之類只管理一類對象的Manager類的基類,只需要在類定義處聲明Entity類型即可
public class BookManager extends HibernateEntityDao<Book> {}
4. IBatisGenericDao
SpringSide 在Spring SqlMapClientDaoSupport基礎(chǔ)上封裝的DAO,功能如下:
1.應(yīng)用范型,使得find(), get() 這些函數(shù)不再返回Object,不再需要強制類型轉(zhuǎn)換。
2.提供各種finder的簡便函數(shù)
應(yīng)用了JDK5可變參數(shù)的hsql查詢函數(shù):List find(String hql, Object... s)
簡單查詢的簡化函數(shù):findBy(Class entityClass,String name,Object ) ,findUniqueBy(Class entityClass,String name, Object ),findByLike(Class entityClass,String name,Object )
3.分頁函數(shù):Page pagedQuery(Criteria criteria, int pageNo, int pageSize) /Page pagedQuery(String hql, int pageNo, int pageSize, Object... args) 。
4.由于IBatis本身的特性,因此有少數(shù)方法的使用和HiberGenericDAO不太一樣,如save傳入的必須是一個指定操作方式的map(參看helloworld下面的UserManagerIBatisTest)
5. IBatisEntityDao
所有UserManager, ProductManager之類只管理一類對象的Manager類的基類,只需要在類定義處聲明Entity類型即可
public class BookManager extends IBatisEntityDao<Book> {}
posted on 2006-12-16 22:42 常言笑 閱讀(817) 評論(0) 編輯 收藏 所屬分類: JAVA/J2EE