HibernateTemplate类的使用

HibernateTemplate类的使用

HibernateTemplate 提供非常多的常用方法来完成基本的操作,比如通常的增加、删除、修改、查询等操作,Spring 2.0更增加对命名SQL查询的支持,也增加对分页的支持。大部分情况下,使用Hibernate的常规用法,就可完成大多数DAO对象的CRUD操作。

1. .find(String queryString); 
  queryString:hql查询语句

String queryString = "from user";
this.getHibernateTemplate().find(queryString);

  返回:user对象的集合

2. .find(String queryString , Object value); 
  queryString:hql查询语句
  value:查询条件

String queryString = "from user u where u.name=?";
this.getHibernateTemplate().find(queryString, "test");

  返回:name属性值为“test”的对象的集合

3. .find(String queryString, Object[] values); 
  queryString:hql查询语句
  value:查询条件数组

String hql= "from bean.User u where u.name=? and u.password=?";
this.getHibernateTemplate().find(hql, new String[]{"test", "123"});

  返回:name属性值为“test”并且password属性值为“123”的对象的集合

4. .findByExample(Object exampleEntity) 
  exampleEntity:查询对象的实例

User u=new User();
u.setPassword("123");
u.setName("bb");
this.getHibernateTemplate().findByExample(u);  

  返回:name属性值为“bb”并且password属性值为“123”的对象的集合
  此方法查询即为sql查一张表的“and”条件查询

5. .findByExample(Object exampleEntity, int firstResult, int maxResults) 
  exampleEntity:查询对象的实例
  firstResult:查询结果的起始行数
  maxResults:查询结果的总行数

User u=new User();
u.setPassword("123");
u.setName("cc");
int start = 0;
int max = 10;
this.getHibernateTemplate().findByExample(u,start,max);

   返回:name属性值为“cc”并且password属性值为“123”,自0起共10个对象的集合(对象从0开始计数)

6. .findByNamedParam(String queryString , String paramName , Object value) 
  queryString:hql查询语句
  paramName:查询条件中引用占位符的名称
  value:引用占位符的值

String queryString = "select count(*) from user u where u.name=:myName";
String paramName= "myName";
String value= "xiyue";
this.getHibernateTemplate().findByNamedParam(queryString, paramName, value); 

   返回:name属性值为“xiyue”的对象的集合

7. .findByNamedParam(String queryString , String[] paramNames , Object[] values) 
  queryString:hql查询语句
  paramNames:查询条件中引用占位符的名称的数组
  values:引用占位符的值的数组

String queryString = "select count(*) from user u where u.name=:myName and u.password=:myPassword";
String[] paramName= new String[]{"myName", "myPassword"};
String[] value= new String[]{"xiyue", "123"};
this.getHibernateTemplate().findByNamedParam(queryString, paramNames, values); 

  返回:name属性值为“xiyue”,并且password属性值为“123”的对象的集合

getSession()与getHibernateTemplate()



1. 使用getSession()方法你只要继承 sessionFactory,而使用getHibernateTemplate()方法必须继承HibernateDaoSupport当然包括 sessionFactory
2. getSession()方法是没有经过spring包装的,spring会把最原始的session给你,在使用完之后必须自己调用相应的close方法,而且也不会对声明式事务进行相应的管理,一旦没有及时关闭连接,就会导致数据库连接池的连接数溢出,而getHibernateTemplate()方法是经过spring封装的,例如添加相应的声明式事务管理,由spring管理相应的连接。
3. 另外,由于hibernate4已经完全可以实现事务了 与spring3.1中的hibernatedao,hibernateTemplete等有冲突,所以从spring3.1里已经不提供hibernatedaosupport,hibernateTemplete了,只能用hibernate原始的方式用getSession()。

时间: 2024-11-07 15:16:58

HibernateTemplate类的使用的相关文章

hibernateTemplate中的回调函数

hibernateTemplate中的回调函数:可以发现在hibernateTemplate类中所有对数据库的操作实现都是利用的回调函数hibernateTemplate中回调函数源码: public <T> T execute(HibernateCallback<T> action) throws DataAccessException { return doExecute(action, false); } public <T> T executeWithNativ

为什么要用Hibernate框架? 把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了?

既然用Hibernate框架访问管理持久层,那为何又提到用Spring来管理以及整合Hibernate呢?把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了? Hibernate操作的步骤如下: 1. 获得Configuration对象 2. 创建SessionFactory 3. 创建Session 4. 打开事务 5. 进行持久化操作.比如上面的添加用户操作 6. 提交事务 7. 发生异常,回滚事务

java web项目DAO层通用接口BaseDao与实现类BaseDaoImpl

在spring+hibernate的web项目中,处理数据层通常会使用Spring框架提供的HibernateTemplate类提供的方法.通常的用法是每一个实体类对应的去写DAO层的接口和实现类.每个实现类中都写hibernateTemp.save(entity).hibernateTemp.update(entity).hibernateTemp.get(id)...这样写固然没错,但存在着大量的重复代码.所以懒惰的程序员烦了,他们要写一个通用的实现类来解决这个问题,让DAO层解放出来.如果

Spring——HibernateTemplate、hibernateDaoTemplate

Template (1)spring在整合Hibernate进行事务管理的时候,会出现一些固定的代码,例如UserDAOImpl的save()方法中有如下代码: Session s = null; try { s = sessionFactory.openSession(); s.getTransaction().begin(); s.save(user); s.getTransaction().commit(); } catch (HibernateException e) { e.print

9.SpringJDBC模板类

1. Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单 2. 提供了JDBC模板,Spring框架提供的 * JdbcTemplate类 3. Spring框架可以整合Hibernate框架,也提供了模板类 * HibernateTemplate类快速入门 1. 步骤一:创建数据库的表结构 create database spring_day03; use spring_day03; create table t_account( id int primary

关于HibernateTemplate

HibernateTemplate类中的方法是spring封装了hibernate中的方法,在使用完了以后会自动释放session.    而如果使用了HibernateDaoSupport的getSession方法,就需要配套的使用 releaseSession(Session session)或者session.close来关闭session,    无法实现自动管理session.所以很多人都倾向于用spring的  Hibernatetemplate类或者HibernateDaoSupp

HibernateTemplate、HibernateDaoSupport两种方法实现增删改查Good(转)

Spring+Hibernate两种方法实现增删改查 首先,定义一个Customer的bean类,设置好Customer.hbm.xml文件.再定义好一个Dao接口.准备好一个jdbc.properties文件. 第一种方法: 在dao类中定义一个HibernateTemplate类的对象,用该对象调用HibernateTemplate模板封装好的方法,如下: /*** * hibernateTemplate的转配模式 */ public class CustomerDaoImpl implem

hibernateTemplate不建议在Spring与Hibernate整合中使用

HibernateTemplate类属于spring框架中的类 :org.springframework.orm.hibernate3.HibernateTemplate HibernateTemplate类目前Hibernate4不支持此类,只支持到Hibernate3,而且在SH整合过程中,如果DaoImpl采用Hibernate实现方法,如果采用Hibernate原声的SessionFactory,即使不采用Spring,原声的SessionFaction同样可以使用,将有利于Dao是可以

SSH(Struts2+Spring+Hibernate)框架搭建流程&lt;注解的方式创建Bean&gt;

此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblogs.com/wkrbky/p/5912810.html 一.Hibernate(数据层)的搭建: 实现流程 二.Spring(注入实例)的使用: 实现流程 三.Struts2(MVC)的搭建: 实现流程 这里注意一点问题: Struts2与Hibernate在一起搭建,antlr包,有冲突.MyE