`
comeonbabye
  • 浏览: 441700 次
  • 性别: 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基类毫不犹豫就泛型了。

分享到:
评论

相关推荐

    Hibernate泛型Dao

    【标题】"Hibernate泛型Dao"是针对Java开发中的数据持久化框架Hibernate的一个高级应用,主要目的是为了提高代码的复用性和简洁性。在传统的Hibernate使用中,针对每个实体类,我们都需要创建一个对应的Dao(Data ...

    泛型dao 泛型dao 泛型dao

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

    Hibernate泛型DAO(结合spring模板支持)

    本篇文章将探讨如何使用Hibernate实现泛型DAO,并结合Spring模板来增强其功能。 泛型DAO是一种设计模式,它通过定义一个通用的DAO接口或抽象类,可以适用于不同的实体类,减少了重复的代码。这种模式的核心在于利用...

    Struts2 Spring3 Hibernate 注解功能 DAO 泛型 通用分页

    Struts2、Spring3和Hibernate是Java开发中的三大框架,它们的集成使用极大地提升了Web应用的开发效率和可维护性。在这个项目"SSHWithAnnotationDemo"中,开发者利用注解功能,DAO泛型以及通用分页技术,进一步优化了...

    使用模式设计及java5新特性在HibernateDAO中的应用

    标题 "使用模式设计及java5新特性在HibernateDAO中的应用" 涉及到的是软件开发中的两个关键领域:设计模式和Java编程语言的新特性,特别是在数据访问对象(DAO)层如何结合使用它们。这篇文章可能详细阐述了如何利用...

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

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

    泛型dao

    在研究泛型DAO的源码时,我们可以学习到如何实现泛型类,以及如何在具体操作中使用反射或类型信息来处理泛型类型。例如,Hibernate的`Session`接口和`SessionFactory`类就提供了泛型版本的`get()`和`load()`方法,...

    Hibernate泛型DAO及使用方法.doc

    本文档主要探讨了如何在Spring+Hibernate环境中创建和使用泛型DAO。 首先,我们来看一下泛型DAO接口的定义。在`com.th.huz`包下,定义了一个名为`GenericDao`的接口,它有两个泛型参数:`T`代表要操作的实体类,`PK...

    经典泛型dao层代码,非常好用简易

    本文将深入探讨一种在SSH(Struts+Spring+Hibernate)框架中广泛应用的经典泛型DAO层实现方式,旨在展示其简洁性、高效性和灵活性。 #### 泛型DAO层:概念与优势 泛型DAO层通过利用Java的泛型机制,提供了一种类型...

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

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

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

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

    Struts2+hibernate+spring整合泛型DAO

    总结来说,"Struts2+hibernate+spring整合泛型DAO"是一种常见的Java Web开发模式,它利用三大框架的优势,结合泛型设计,提高了代码复用,降低了维护成本,使得开发者能更专注于业务逻辑,而不是基础架构。

    hibernate不是泛型的通用DAo1

    在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者使用面向对象的方式来操作数据库,而无需关心底层SQL语句的编写。然而,为了提高代码的复用性和可维护性,通常会设计一个通用DAO...

    Hibernate泛型DAO及使用方法

    泛型DAO是DAO模式的一种改进,通过使用Java泛型,我们可以创建一个适用于任何类型的DAO接口,这样就可以避免为每个实体类都创建一个特定的DAO类。 在给出的代码片段中,定义了一个泛型接口`GenericDao`,它接受两个...

    Hibernate泛型DAO接口,大部分通用都已包括

    `DaoUtil`类初始化了一个`SessionFactory`实例,并提供了一个获取`Session`的静态方法,方便在DAO实现类中使用。 总的来说,"Hibernate泛型DAO接口,大部分通用都已包括"意味着我们已经定义了一套完整的、适用于多...

    spring hibernate 泛型DAO

    在Hibernate中,我们可以使用HibernateTemplate或SessionFactory来实现这个泛型DAO。例如: ```java public abstract class HibernateGenericDao, ID extends Serializable&gt; implements GenericDao, ID&gt; { ...

    Hibernate泛型DAO及使用方法借鉴.pdf

    在Java开发中,特别是使用Spring+Hibernate框架时,泛型DAO(Data Access Object)是常见的设计模式,它提供了对数据库操作的一般化接口,以提高代码的重用性和可维护性。本文将探讨如何设计和使用泛型Hibernate DAO...

    基于hibernate的泛型Dao框架

    标题中的“基于Hibernate的泛型Dao框架”是指在Java开发中使用Hibernate ORM工具,并结合泛型设计模式构建的数据库访问对象(DAO)框架。这样的框架旨在提高代码复用性,减少重复工作,使得数据访问层的实现更加简洁...

    大家看看我设计的泛型DAO(使用Spring的Anotation和Hibernate)

    本篇文章将深入探讨一个使用Spring注解和Hibernate实现的泛型DAO设计,以提高代码的复用性和可维护性。 首先,`HibernateBaseDao.java`是基础的Hibernate DAO类,它提供了对Hibernate操作的基本封装。这个类通常会...

Global site tag (gtag.js) - Google Analytics