`

泛型DAO的设计模式

阅读更多

(一)首先定义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组件数量庞大的时候,代码量的减少更加明显。 泛型DAO的核心是定义一个GenericDao接口,声明基本的CRUD操作: 用hibernate作为持久化...

    Java Web程序运用中泛型DAO的作用.pdf

    目的,研究泛型DAO模式在java Web程序...方法,通过研究泛型DAO模式的设计理念及工作过程,与已经存在的DAO模式进行对比,分析其在java Web程序运用中的作用。结果:在编辑了泛型DAO模式之后的java Web程序中,程序运算...

    java软件开发dao层泛型模式

    这个Dao层设计模式,是多年来本人总结的经典通用方法的集合,应用hibernate技术,以及java泛型模式,为快速开发项目提供了通用Dao层。文档中有相应测试用例!

    图书管理系统,使用MVC设计模式(vo,dao,service,servlet),前端采用Bootstrap

    简单的图书管理系统,前端采用了Bootstrap,后端采用MVC的设计模式,包括:vo,dao,service,servlet,filter,listener;整个项目实现了图书的增删改查,出入库操作,管理员的增删改查操作,操作日志记录,登录...

    基于MVC 模式的分页组件应用 (2011年)

    在数据层中引入Java 持久化API 和Spring 技术,在业务逻辑层中引入泛型DAO 模式和桥接模式,在显示层中引入JSP 和Struts2 标签,并给出部分程序源代码。应用结果表明,与其他分页方法相比,该模型的执行效率较高,...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    设计模式 结构模式 适配器模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 创建模式 抽象工厂模式 工厂方法模式 建造这模式 原型模式 单例模式 行为模式 责任链模式 命令模式 解释...

    Java典型模块

    第29章 人员信息管理项目 (接口设计模式+MySQL数据库) 29.1 人员信息管理原理 29.1.1 项目结构框架分析 29.1.2 项目功能业务分析 29.2 人员信息管理项目前期准备 29.2.1 设计数据库 29.2.2 数据库操作相关类 29.3 ...

    jeecg-framework-3.1.0.RELEASE

    JEECG V3.0版本采用SpringMVC+Hibernate+UI快速开发库 的基础架构,采用面向声明的开发模式, 基于泛型编写极少代码即可实现复杂的数据展示、数据编辑、 表单处理等功能,再配合代码生成器的使用,将J2EE的开发效率...

    Hibernate实战(第2版 中文高清版)

     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 命令模式的...

    AppFramework数据库访问组件_代码生成插件_V1.1.rar

    &lt;br&gt;1.2 各种优秀ORMap工具比较 NHibernate和IBatisNet等虽然都实现了ORMap,但它们的设计侧重点有所不同,有着各自的优势和缺陷,适合于特定的项目。NHibernate实现了纯对象化的ORMap,在屏蔽数据库差异、...

    AppFramework_V1.0

    &lt;br&gt;1.2 各种优秀ORMap工具比较 NHibernate和IBatisNet等虽然都实现了ORMap,但它们的设计侧重点有所不同,有着各自的优势和缺陷,适合于特定的项目。NHibernate实现了纯对象化的ORMap,在屏蔽数据库差异、...

    AppFramework_V1.0_New

    &lt;br&gt;1.2 各种优秀ORMap工具比较 NHibernate和IBatisNet等虽然都实现了ORMap,但它们的设计侧重点有所不同,有着各自的优势和缺陷,适合于特定的项目。NHibernate实现了纯对象化的ORMap,在屏蔽数据库差异、...

    Java学习笔记-个人整理的

    {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....

Global site tag (gtag.js) - Google Analytics