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

1、常用方法:
   1)void delete(Object entity):删除指定持久化实例
   2)deleteAll(Collection entities):删除集合内全部持久化类实例
   3)find(String queryString):根据HQL查询字符串来返回实例集合 
   4)findByNamedQuery(String queryName):根据命名查询返回实例集合
   5)get(Class entityClass, Serializable id):根据主键加载特定持久化类的实例
   6)load(Class entityClass, Serializable id)
   7)save(Object entity):保存新的实例
   8)saveOrUpdate(Object entity):根据实例状态,选择保存或者更新
   9)update(Object entity):更新实例的状态,要求entity是持久状态
   10)setMaxResults(int maxResults):设置分页的大小

2、应用示例
   1)get/load存取单条数据
      public Teacher getTeacherById(Long id) {   
         return (Teacher)this.hibernateTemplate.get(Teacher.class, id);   
      }   
   
      public Teacher getTeacherById(Long id) {   
         return (Teacher)this.hibernateTemplate.load(Teacher.class, id);   
      }

2)find/iterate查询操作
      public Iterator getTeachersByAge(int age) {   
         Iterator iterator = null;      
         //使用find方法   
         List list = (List)this.hibernateTemplate().find("from Teacher t where t.age>?", new Integer(age));   
         iterator = list.iterator();   
         //使用iterator方法   
         iterator = this.hibernateTemplate().iterate("from Teacher t where t.age>?", new Integer(age));       
         return iterator;   
      }  
      find和iterator的区别主要是iterate采用了N+1次查询,对于大批量查询,比如查询10000条记录,那么iterate就要执行10000+1次查询,find和iterate应根据具体的实际情况来使用,对于频繁的写操作对象,应使用find查询,而对于一些只读的数据对象,应使用iterate操作,因为iterate操作使用了Hibernate的缓存机制

3)save/update/saveOrUpdate/delete 保存/更新/删除操作   
      public void save(Teacher teacher) {   
         this.hibernateTemplate.save(teacher);   
      }  
      public void update(Teacher teacher) {   
         this.hibernateTemplate.update(teacher);   
      }                
      public void update(Teacher teacher) {   
         this.hibernateTemplate.saveOrUpdate(teacher);   
      }  
      public void update(Teacher teacher) {   
         this.hibernateTemplate.delete(teacher);   
      }

4)bulkUpdate批量删除或者更新
      bulkUpdate提供了批量删除和更新,直接转换为相应的update/delete SQL进行批量删除和更新
      public void batchDelete(String name, int age) {   
        this.hibernateTemplate.bulkUpdate("delete Teacher where name=? and age = ?", new Object[]{name, age});   
      }  
      public void batchDelete(String name, String newName) {   
        this.hibernateTemplate.bulkUpdate("update Teacher set name=? where name=?", new Object[]{newName, name});   
      }  
      此时要注意的一个问题是,使用bulkUpdate操作,必须手工清除相关对象在Hibernate中的缓存(包括一级缓存和二级缓存)

HibernateTemplate使用方法相关推荐

  1. HibernateTemplate、HibernateDaoSupport两种方法实现增删改查Good

    Spring+Hibernate两种方法实现增删改查 首先,定义一个Customer的bean类,设置好Customer.hbm.xml文件.再定义好一个Dao接口.准备好一个jdbc.propert ...

  2. spring的HibernateDaoSupport以及HibernateTemplate和jdbcTemplate的选择问题

    Xml代码   pring提供访问数据库的有三种方式: HibernateDaoSupport,HibernateTemplate(推荐使用),jdbcTemplate HibernateTempla ...

  3. Spring testcontext

    Spring testcontext FROM: http://www.ibm.com/developerworks/cn/java/j-lo-spring25-test/ Spring 2.5 Te ...

  4. Spring学习详解(1)——Spring入门详解

    2019独角兽企业重金招聘Python工程师标准>>> 一:spring的基本用法: 1,关于spring容器: spring容器是Spring的核心,该 容器负责管理spring中 ...

  5. Java Hibernate模板 学习总结

    使用Hibernate模板 与Hibernate进行交互的主要接口是org.hibernate.Session.这个Session接口提供了基本的数据访问功 能,比如从数据库保存.更新.删除和加载对象 ...

  6. 深入浅出 Spring

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7683070.html 前言:笔记中提供了大量的代码示例,需要说明的是,大部分代码示例都是以图片 ...

  7. Hibernate hql getHibernateTemplate()常用方法汇总

    getHibernateTemplate()常用方法  一.find(String queryString);           示例: Java代码   this.getHibernateTemp ...

  8. 6.SSH框架整合及简单使用示例

    6.SSH框架整合 ssh:spring+spring-mvc+hibernate 6.1 整合的场所 :web.xml 跟 5.ssm框架 整合类似,可以对照学习,通过监听器配置hibernate, ...

  9. oracle能用hql吗,使用HQL查询日期,Oracle报“Invalid number”

    如题,Oracle数据库里面有一批记录,现在我想根据其中一个叫:txn_date的字段来查询记录,在Hbm文件中我配置了该HQL,如下所示: select {job.*} from Newslette ...

最新文章

  1. mysql定制rpm包_mysql运维管理-企业rpm包的定制
  2. 第五届工业互联网大数据:配件需求29th方案与代码
  3. matlab练习程序(三阶张量T-QR分解)
  4. 汉仪尚巍手书有版权吗_为什么“汉仪尚巍手书”会大行天下?
  5. c# mysql 操作_c#对mysql数据库的基本操作
  6. BigPipe 大的页面分割成一个一个管道
  7. Github | 标星20k+ Facebook 开源高效词表征学习库fastText
  8. 业内最大规模多标签图像数据集开源 | GitHub资源
  9. ISA2000安装与设置
  10. win10家庭版添加组策略编辑器,禁用系统自动更新
  11. PRML 1.6 信息论
  12. [oracle] Instant Client 即时客户端
  13. 【css】关于pdf分页(page-break)
  14. 拼音分词器_自动补全
  15. android studio的旅游APP的开发和设计
  16. 2022-iOS个人开发者账号申请流程
  17. 技术网站 常用的技术网站
  18. 物联网APP开发的好处有哪些
  19. php 感叹号有什么用,感叹号!代表什么意思?(标点符号的用法之感叹号)
  20. 20年寒假实习面经(中科院自动化所、Momenta、百度大搜、字节跳动等)

热门文章

  1. 【jQuery学习】—jQuery操作元素位置
  2. iconfont字体图标的使用方法
  3. 川菜中,你觉得哪道菜能称为“经典之菜”呢?
  4. python入门——P54论一只爬虫的自我修养1
  5. qml 连线_将QML信号连接到C 11 lambda插槽(Qt 5)
  6. 了解SQL Server数据库静态数据及其如何适合数据库生命周期管理
  7. power bi 背景图_Power BI桌面饼图树
  8. sql还原数据库备份数据库_如何获取SQL数据库还原历史记录
  9. SQL Server中的尾日志备份和还原
  10. t–sql pl–sql_SQL View –完整的介绍和演练