`
新的开始2015
  • 浏览: 1744 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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();
}
}
分享到:
评论

相关推荐

    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