DAO层指南
1.概述
SpringSide的DAO层两个特点:
1.DAO层与Business层合并,且省略DAO接口,用cglib方式实现AOP事务控制。
2.基于范型的强基类,普通DAO类只要用声明所要管理的Entity类型即拥有完整的CRUD操作。
结果就是,普通的Manager类只有一个文件,数行代码。
同时,当逻辑比较复杂,Manager类比较庞大时,可以内部重构拆分为Dao与Manager,但这个重构行为是内部的,不造成影响的。因为其他类调用的始终是Manager。
2. HibernateGenericDao
SpringSide 在Spring HibernateDaoSupport基础上封装的DAO,功能如下:
1.应用范型,使得find(), get() 这些函数不再返回Object,不再需要强制类型转换。
2.提供各种finder的简便函数
应用了JDK5可变参数的hsql查询函数:List find(String hql, Object... values)
简单查询的简化函数:findBy(Class entityClass,String name,Object value) ,findUniqueBy(Class entityClass,String name, Object value),findByLike(Class entityClass,String name,Object value)
3.分页函数:Page pagedQuery(Criteria criteria, int pageNo, int pageSize) /Page pagedQuery(String hql, int pageNo, int pageSize, Object... args) 。
4.判别对象属性在数据库中唯一的函数:isNotUnique(entityClass, Object entity, String names)。
3. HibernateEntityDao
所有UserManager, ProductManager之类只管理一类对象的Manager类的基类,只需要在类定义处声明Entity类型即可
public class BookManager extends HibernateEntityDao<Book> {}