`
as619864232
  • 浏览: 326362 次
社区版块
存档分类
最新评论

java 中 BaseDao 在Hibernate中的用法

阅读更多

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

public abstract class BaseDao<T> {
	private SessionFactory sessionFactory;

	private Class clazz;

	public BaseDao() {
		super();
		clazz = getParameterizedTypeByParent(super.getClass());
	}

	private Class getParameterizedTypeByParent(Class clazz) {
		Type tp = clazz.getGenericSuperclass();
		if (tp instanceof ParameterizedType) {
			return (Class) ((ParameterizedType) tp).getActualTypeArguments()[0];
		} else {
			throw new ClassCastException("this is not ParameterizedType type");
		}
	}

	public SessionFactory getSessionFactory() {
		return sessionFactory;
	}

	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

	public List findAll() {
		List results = getSession().createCriteria(clazz).list();
		return results;
	}

	public T findById(Integer id) {
		T result = (T) getSession().get(clazz, id);
		return result;
	}

	public void update(T obj) {
		getSession().save(obj);
	}

	private Session getSession() {
		return sessionFactory.getCurrentSession();
	}
}
 
分享到:
评论
1 楼 sunday1207 2015-05-24  
private Class getParameterizedTypeByParent(Class clazz) { 
        Type tp = clazz.getGenericSuperclass(); 
        if (tp instanceof ParameterizedType) { 
            return (Class) ((ParameterizedType) tp).getActualTypeArguments()[0]; 
        } else { 
              ---直接在车里报异常了如何处理
            throw new ClassCastException("this is not ParameterizedType type"); 
        } 
    } 


相关推荐

    基于hibernate的baseDao

    在BaseDAO中,每个方法的输入参数、返回值以及可能抛出的异常都应该有清晰的解释。 5. **BaseDAO的优化** 除了基本操作,BaseDAO还可以进行一些优化,比如事务管理、缓存控制、批量操作等。例如,可以使用Spring的...

    hibernate>>BaseDAO

    在Java开发领域,Hibernate是一个非常重要的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是底层的数据访问。`BaseDAO`是许多项目中常见的一种设计模式,它代表了数据访问对象...

    spring4+hibernate4 封装BaseDao增删改查以及分页,,支持jdk1.7,不支持jdk1.8

    项目中实现了分页功能,可能通过在Hibernate查询中添加限制条件(如`setFirstResult()`和`setMaxResults()`)或者使用`Criteria` API的`setFirstResult()`和`setMaxResults()`来实现。这使得用户可以按需加载数据,...

    hibernate BASEDAO

    在Java的持久化框架Hibernate中,BaseDAO(Base Data Access Object)是一种常见的设计模式,用于封装数据库操作,提供一套标准的方法来实现CRUD(Create、Read、Update、Delete)操作。这种模式使得业务层可以更加...

    Hibernate底层数据库操作函数BaseDao+具体实例

    在`BaseDao`的实现中,这些方法会利用Hibernate的Session和Transaction接口来完成实际的数据库交互。`Session`是Hibernate的主要工作单元,它可以代表一次数据库连接或者一个单位的工作。`Transaction`则用于管理...

    java BaseDao

    在Java编程语言中,BaseDao(基础数据访问对象)是一个常见的设计模式,它为数据库操作提供了一种统一的接口。BaseDao通常包含了CRUD(创建、读取、更新、删除)的基本方法,使得开发者可以方便地对数据库进行操作,...

    spring和hibernate集成后,通用的basedao

    在基于Spring和Hibernate的应用中,实现分页通常涉及到使用Hibernate的Criteria API或HQL来添加LIMIT和OFFSET子句,或者使用Spring Data JPA的Pageable接口。 总结起来,这个"ssh"压缩包中的示例代码展示了如何在...

    hibernate basedao(泛型版本)

    泛型是Java SE 5.0引入的新特性,它允许在类、接口和方法中使用类型参数,从而实现更强大的类型检查和减少类型转换的冗余。 1. 泛型BaseDAO:`GenericBaseDao.java`和`GenericBaseDaoInter.java` 泛型BaseDAO的主要...

    baseDao及baseDaoImpl将hibernate里面的方法进行合理的封装,使用到java的反射技术

    在Java开发中,BaseDao和BaseDaoImpl是常见的设计模式,它们主要用于数据库操作,尤其是在使用ORM框架如Hibernate时。这两个类通常作为数据访问对象(DAO)的基类,旨在简化和标准化对数据库的CRUD(创建、读取、...

    basedao_basedao数据库_

    "基于BaseDao的手动数据库操作"是一个常见的话题,尤其在Java开发中。BaseDao是一种设计模式,它通常被用来作为数据库访问对象(DAO)的基础,用于封装数据库的基本CRUD(创建、读取、更新、删除)操作。这种模式...

    Java通用的BaseDao(我是用连接池做的你把里面代码换一下就行了)

    在Java开发中,BaseDao(基础数据访问对象)是一个常见的设计模式,用于提供数据库操作的通用接口或基类。这个模式的主要目标是提高代码的复用性和可维护性,通过抽象出基本的CRUD(创建、读取、更新、删除)操作,...

    企业通用BaseDao方法集

    在企业级软件开发中,通用BaseDao方法集是提高代码复用性和开发效率的重要工具。BaseDao(Base Data Access Object)通常是一个基类,它包含了数据库操作的基本方法,供其他具体的DAO类继承使用。BaseDao的设计理念...

    SpringBoot_BaseDao.zip

    在IT行业中,SpringBoot是一个非常流行的Java开发框架,它简化了Spring应用的初始搭建以及开发过程,使得开发者能够快速地创建生产级别的、基于Spring框架的应用。"SpringBoot_BaseDao.zip"这个压缩包文件显然与...

    hibernate中的对象关系模型

    在Java持久化框架Hibernate中,对象关系模型(Object-Relational Mapping,ORM)是将数据库中的数据映射到Java对象的技术。它使得开发者能够用面向对象的方式来操作数据库,简化了数据库编程的过程。以下是对...

    ssh+baseDao实现分页

    在IT行业中,SSH(Spring、Struts、Hibernate)是一个经典的Java Web开发框架组合,而BaseDao是常用于数据访问层的一个基类设计。本话题主要围绕如何利用SSH框架结合BaseDao实现分页功能来展开。 首先,让我们了解...

    Hibernate留言板

    - 在Hibernate中,可以通过`&lt;set&gt;`元素定义一对多的关系。 - 示例代码中: - `&lt;set name="history"&gt;`表示`Students`实体类中有一个名为`history`的集合属性。 - `&lt;one-to-many class="limq.hibernate.vo.History...

    Spring声明式事务及BaseDao完整版

    3. **模板方法**:在BaseDao中,可以定义模板方法,例如executeSql,子类在实现具体操作时调用这个模板方法,从而统一事务控制。 总结,Spring的声明式事务管理简化了事务处理,使得开发者可以专注于业务逻辑,而...

    BaseDao的封装

    这些方法的实现可以使用模板方法设计模式,将一部分通用逻辑放在`BaseDao`中,而具体的SQL语句或者HQL(Hibernate Query Language)则由子类提供。 在实际项目中,`BaseDao`的实现往往需要结合事务管理。例如,当一...

    SSH集成查询分页处理BaseDao

    在这个场景中,"BaseDao"通常是一个基类,它包含了通用的数据库操作方法,可以被各个特定的DAO(Data Access Object)继承,以实现业务逻辑中的数据访问。 1. **BaseDao**:BaseDao是DAO层的基类,它的设计目的是...

    jdbcBaseDao

    对于初学者来说,理解并掌握此类的实现原理和使用方法,有助于快速上手数据库编程。 ### JDBC基础知识 1. **JDBC接口与驱动管理**: JDBC是Java与数据库交互的标准API,通过`DriverManager`管理数据库驱动,`...

Global site tag (gtag.js) - Google Analytics