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

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"); 
        } 
    } 


相关推荐

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

    spring4+hibernate4 整合,封装BaseDao增删改查以及分页,,支持jdk1.7,不支持jdk1.8,数据源使用c3p0

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

    对hibernate里面的方法进行合理的封装,使用到java的泛型及java的反射技术;有利于减少代码,加快开发速度!

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

    使用方法,以用户添加为例: 1、定义User类,并提供get和set方法。 2、定义IUserDao接口,使其继承IBaseDao并传入泛型。若提供的方法不满足需求, 可以在此接口中定义自己的业务方法,然后在IUserDao的实现类中 通过...

    整合spring3-hibernate的小项目(一)

    博客文章 【SSH学习笔记】整合spring3-hibernate的小项目(一) 配套资源 需求分析: ...2、使用BaseDao获取注入SessionFactory并返回Session 3、实现查询所有和按字符串查询的方法 4、使用JUNIT测试

    初学JAVA-WEB开发的小项目

    在web层和dao层都提取了公共代码封装到BaseAction和BaseDao中,提高了代码的复用,同时按照OO设计原则,针对接口编程,而不是针对实现编程。 使用拦截器的方法对系统权限进行初步控制(后续可以采用Shiro框架进行...

    一套适合初学者的JAVA-WEB开发的小项目

    在web层和dao层都提取了公共代码封装到BaseAction和BaseDao中,提高了代码的复用性,同时遵循OO设计原则,接口是针对编程的,而不是针对实现编程的。 使用拦截器的方法对系统权限进行初步控制(后续可以采用Shiro...

    使用反射技术和Facade模式演示封装数据库操作--ORM原理

    只需呼叫FacadeForDAO.findModel(表名)方法,在表名参数给出实际数据库中表的名称就可以返回一个包含对应POJO类的对象的集合--非常简单--输入表名得到Java对象的集合,然后根据需要使用这些对象。 给客户端代码方式...

    整合spring3-hibernate的小项目(二)

    博客文章 【SSH学习笔记】整合spring3-hibernate的小项目(二) ...2、使用BaseDao获取注入SessionFactory并返回Session 3、用generic接口及其实现类,实现泛型化的查询所有和按字符串查询的方法 4、使用JUNIT测试

    自动代码生成

    用过hibernate的朋友们都知道,有个强大的东西叫 JPA,还有个...代码中尽量减少使用了第三方的 jar 包,基本上是愿生的代码,避免朋友们因为jar包发愁,也没有使用maven管理,就是一个java项目,只要有java环境即可运行

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    友情链接及网页访问量统计显示:在博客的个人页面中还提供了推荐给普通网络用户的相关友情链接,此外,对个人页面的访问量也在随时进行统计,并在个人页面中进行直观的显示。 博客主页面的用例图如图3所示: 图3 ...

    基于SpringJDBC的轻量级ORM框架sborm.zip

    Hibernate的对象化关联处理确实挺强大,但是使用起来坑太多,有多少人敢在项目 中大范围使用真不知道,屠龙刀不是人人都提的起啊。 2、mybatis:轻量级,基于xml的模式感觉不利于封装,代码量不小,基于xml维护也...

Global site tag (gtag.js) - Google Analytics