(一)首先定义DAO接口IGenericDAO,该接口定义了共同的CRUD操作:
public interface IGenericDAO<T,PK extends Serializable>{
public T findById(PK id) ;
public List<T> findAll() ;
public T save(T entity) ;
public void delete(T entity) ;
public void update(T entity) ;
}
(二)针对IGenericDAO接口的Hibernate实现,完成通用的CRUD操作
public class GenericDaoHibernate<T,PK extends Serializable> implements IGenericDAO<T,PK>{
private Class<T> clazz ;
private Session session ;
public GenericDaoHibernate(){}
public T findById(PK id) {
return (T)session.get(clazz,id) ;
}
public List<T> findAll() {
Query query = session.createQuery("from "+clazz.getName()) ;
return query.list() ;
}
public T save(T entity) {
return (T)session.save(entity) ;
}
public void delete(T entity) {
session.delete(entity) ;
}
public void update(T entity) {
session.update(entity) ;
}
}
(三)举例定义一个IUserDAO接口,该接口继承IGenericDAO
public interface IUserDAO extends IGenericDAO〈User,Integer〉{
public User findByName(String username);
}
(四)针对IUserDAO 的Hibernate实现UserDAOHibernate
public class UserDAOHibernate extends GenericDaoHibernate<User,Integer> implements IUserDAO{
..............
}
/* 如何得到泛型的class */
this.clazz = (Class) ((ParameterizedType) getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
相关推荐
而泛型DAO是一个类型安全的,代码精简的设计模式(相对于传统DAO),尤其在DAO组件数量庞大的时候,代码量的减少更加明显。 泛型DAO的核心是定义一个GenericDao接口,声明基本的CRUD操作: 用hibernate作为持久化...
目的,研究泛型DAO模式在java Web程序...方法,通过研究泛型DAO模式的设计理念及工作过程,与已经存在的DAO模式进行对比,分析其在java Web程序运用中的作用。结果:在编辑了泛型DAO模式之后的java Web程序中,程序运算...
这个Dao层设计模式,是多年来本人总结的经典通用方法的集合,应用hibernate技术,以及java泛型模式,为快速开发项目提供了通用Dao层。文档中有相应测试用例!
简单的图书管理系统,前端采用了Bootstrap,后端采用MVC的设计模式,包括:vo,dao,service,servlet,filter,listener;整个项目实现了图书的增删改查,出入库操作,管理员的增删改查操作,操作日志记录,登录...
在数据层中引入Java 持久化API 和Spring 技术,在业务逻辑层中引入泛型DAO 模式和桥接模式,在显示层中引入JSP 和Struts2 标签,并给出部分程序源代码。应用结果表明,与其他分页方法相比,该模型的执行效率较高,...
设计模式 结构模式 适配器模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 创建模式 抽象工厂模式 工厂方法模式 建造这模式 原型模式 单例模式 行为模式 责任链模式 命令模式 解释...
第29章 人员信息管理项目 (接口设计模式+MySQL数据库) 29.1 人员信息管理原理 29.1.1 项目结构框架分析 29.1.2 项目功能业务分析 29.2 人员信息管理项目前期准备 29.2.1 设计数据库 29.2.2 数据库操作相关类 29.3 ...
JEECG V3.0版本采用SpringMVC+Hibernate+UI快速开发库 的基础架构,采用面向声明的开发模式, 基于泛型编写极少代码即可实现复杂的数据展示、数据编辑、 表单处理等功能,再配合代码生成器的使用,将J2EE的开发效率...
16.2.1 泛型的数据访问对象模式 16.2.2 实现泛型CRUD接口 16.2.3 实现实体DAO 16.2.4 利用数据访问对象 16.3 命令模式简介 16.3.1 基础接口 16.3.2 执行命令对象 16.3.3 命令模式的...
<br>1.2 各种优秀ORMap工具比较 NHibernate和IBatisNet等虽然都实现了ORMap,但它们的设计侧重点有所不同,有着各自的优势和缺陷,适合于特定的项目。NHibernate实现了纯对象化的ORMap,在屏蔽数据库差异、...
<br>1.2 各种优秀ORMap工具比较 NHibernate和IBatisNet等虽然都实现了ORMap,但它们的设计侧重点有所不同,有着各自的优势和缺陷,适合于特定的项目。NHibernate实现了纯对象化的ORMap,在屏蔽数据库差异、...
<br>1.2 各种优秀ORMap工具比较 NHibernate和IBatisNet等虽然都实现了ORMap,但它们的设计侧重点有所不同,有着各自的优势和缺陷,适合于特定的项目。NHibernate实现了纯对象化的ORMap,在屏蔽数据库差异、...
{14.2}XML的设计}{205}{section.14.2} {14.3}DTD/Schema}{205}{section.14.3} {14.3.1}SAX应用}{206}{subsection.14.3.1} {14.4}dom4j}{207}{section.14.4} {14.5}XPath}{210}{section.14.5} {14.6}apache....