`
comeonbabye
  • 浏览: 438786 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HibernateDao中使用Java泛型

阅读更多

摘自网上的一些总结。

 

 

第二是泛型 反射,原本因为Java的泛型拿不到T.class而觉得泛型没用,最近才刚刚学到通过反射的API来获取T的Class,后述。

第三是收敛,就是增加了类型安全,减少了强制类型转换的代码。这点倒是Java Collection历来的弱项。

 

所以,作为一个架构设计师,应该使用上述的第2,3项用法,在框架类里配合使用反射和泛型,使得框架的能力更强; 同时采用收敛特性,本着对人民负责的精神,用泛型使框架更加类型安全,更少强制类型转换。

 

通过反射获得 T.class:

不知为何书上不怎么讲这个,是差沙告诉我才知道的,最经典的应用见Hibernate wiki的Generic Data Access Objects , 代码如下:

abstract public class BaseHibernateEntityDao < T > extends HibernateDaoSupport {
private Class<T> entityClass;
public BaseHibernateEntityDao() {
entityClass
= (Class<T>) ((ParameterizedType) getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
}
public T get(Serializable id) {
T o
= (T) getHibernateTemplate().get(entityClass, id);
}
}


精华就是这句了:

Class < T > entityClass = (Class < T > ) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[ 0 ];


泛型之后,所有BaseHibernateEntityDao的子类只要定义了泛型,就无需再重载getEnttityClass(),get()函数和find()函数,销益挺明显的,所以SpringSide 的Dao基类毫不犹豫就泛型了。

分享到:
评论

相关推荐

    泛型dao 泛型dao 泛型dao

    Struts2、Hibernate、Spring整合的泛型DAO (本人评价: 代码开发效率提高30% 代码出错率减少70%) 对于大多数开发人员,系统中的每个 DAO 编写几乎相同的代码到目前为止已经成为一种习惯。虽然所有人都将这种重复...

    最新修订:基于java泛型的通用DAO(CURD)实现

    现在无论做什么应用,基本上都会有涉及对象... 其实,利用Java面向对象的基本特性及JDK5新引入的泛型语法,我们可以创建通用的DAO对象的CRUD方法,同时又可保证类型的安全性。下面DAO的实现以Hibernate为基础加以演示。

    虚拟数据层 Struts2、Hibernate、Spring整合的泛型DAO Version 2010.9.27

    Struts2、Hibernate、Spring整合的泛型DAO (本人评价: 代码开发效率提高30% 代码出错率减少70%) 对于大多数开发人员,系统中的每个 DAO 编写几乎相同的代码到目前为止已经成为一种习惯。虽然所有人都将这种重复...

    基于java泛型的通用DAO(CURD)实现

    现在无论做什么应用,基本上都会有涉及对象... 其实,利用Java面向对象的基本特性及JDK5新引入的泛型语法,我们可以创建通用的DAO对象的CRUD方法,同时又可保证类型的安全性。下面DAO的实现以Hibernate为基础加以演示。

    java软件开发dao层泛型模式

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

    Struts2+hibernate+spring整合泛型DAO

    减少重复代码的编写,增强DAO层代码的重用。

    generic-dao:使用泛型提供基于 Hibernate 的 DAO 层,因此它可以与任何 Hibernate 域对象一起使用

    通用道在 JPA/HIbernate/Spring 环境中使用泛型提供 DAO API,因此它可以与此类架构中的任何 Hibernate POJO 一起使用,而无需为每个域类创建专用的数据访问接口。 Maven 依赖项: &lt;dependency&gt; &lt;groupId&gt;org....

    java数据库增删改查操作实例(hibernate原理)支持泛型集合

    写了一个通用java访问数据库操作的DAO类,非常简单,非常强大,非常方便,非常好用。绝对原版,绝对原创。把hibernate彻底扔掉。(根据C#改编的,原本我是搞C#开发的)支持泛型集合,让程序运行效率更高。

    java-entitymanager-generic-dao:使用 Hibernate EntityManager (Spring Boot) 的通用 Dao

    这种实现的主要优点是,由于这个 dao 是使用 Java 泛型实现的,我们只需要提供托管的实体类型和主键类型。 通过这样做,我们可以访问参数化数据操作,而无需编写单行代码。 请注意,这样做的主要目标是代码重用,这...

    java-session-generic-dao:用于 Hibernate ORM (JSE) 的通用数据访问对象的非常简单的实现

    这种实现的主要优点是,由于这个 dao 是使用 Java 泛型实现的,我们只需要提供托管的实体类型和主键类型。 通过这样做,我们可以访问参数化数据操作,而无需编写单行代码。 请注意,这样做的主要目标是代码重用,这...

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

     1.1.3 在Java中使用SQL   1.1.4 面向对象应用程序中的持久化   1.2 范式不匹配   1.2.1 粒度问题   1.2.2 子类型问题   1.2.3 同一性问题   1.2.4 与关联相关的问题   1.2.5 数据导航的问题   ...

    SpringBoot使用Spring-data-jpa简化数据访问层

    为了解决抽象各个Java实体基本的“增删改查”操作,我们通常会以泛型的方式封装一个模板Dao来进行抽象简化,但是这样依然不是很方便,我们需要针对每个实体编写一个继承自泛型模板Dao的接口,再编写该接口的实现。...

    北大青鸟学士后第三单元OA办公自动化管理系统

    (2)dao 使用了公共的GenricDao接口及实现类GenricHibernateDao 并使用了泛型 com.chen.common 包中的CopyOfGenericHibernateDao.java HibernateUtil.java两个是在集成Spring前使用的 可以当做参考吧; (3) ...

    基于Java web SSH框架的电影后台管理系统(源码+数据库).zip

    - [x] baseDao定义泛型抽象出基本dao操作 ## 导入项目 ### 导入SQL文件 进入到db文件夹,将ssh.sql文件导入到数据库中 ### 修改数据库密码 修改hibernate.cfg.xml文件 ```xml &lt;property name="hibernate....

    代码生成器Mgicode生成器JAVA代码生成器

    而有一些是必须要修改,如在实体中修改属性,一定要到数据库中修改,到dao,service,action,page一一进行修改,如果修改的是外键属性,修改的代码更为复杂。开发人员最痛苦的事情就无穷无尽的修改,领导简单的一句话...

    DAL4j:数据访问第4层Java-开源

    框架生成的pojo使用DAL4j框架DAO泛型来简化CRUD操作。 DAL4j提供了可选的挂钩,使您可以集成在数据库中加密数据时使用的数据字段的加密/解密。 最后,DAL4j提供了一组通用类,可用于简化J2E会话Bean的创建,这些J2E...

    积分管理系统java源码-mystyle:我的风格

    使用泛型封装dao、service、controller基类,包含分页,查询条件封装,从而达到快速crud操作 基于hibernate简单查询条件的封装 权限管理——使用框架apache shiro进行系统认证、授权操作(完成) 系统认证、授权操作 ...

    Java学习笔记-个人整理的

    {2.8}框架中移动的小球}{59}{section.2.8} {2.9}抽象与接口}{59}{section.2.9} {2.10}访问控制}{60}{section.2.10} {2.10.1}类的属性}{60}{subsection.2.10.1} {2.10.2}类的方法}{61}{subsection.2.10.2} {...

    basic-common2h3:基于hibernate3的BaseDao,完成增删改查、分页操作

    实现一个基于hibernate3的基本的dao,实现CRUD; 一行代码完成CRUD,提供多种重载方法详见IBaseDao,但是项目需要基于SSH框架。 ============ 使用方法,以用户添加为例: 1、定义User类,并提供get和set方法。 2、...

    warp-persist-2.0-20090214.zip

    Warp是一个相当棒的Java Web框架,而且前景非常看好。 Warp框架充分利用了JDK5.0的Annotation和泛型机制,并且基于Google Guice这个IoC框架,提供了full-stack的Web开发设施,他主要包含了四个部分: warp-...

Global site tag (gtag.js) - Google Analytics