HibernateTemplate使用方法
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使用方法相关推荐
- HibernateTemplate、HibernateDaoSupport两种方法实现增删改查Good
Spring+Hibernate两种方法实现增删改查 首先,定义一个Customer的bean类,设置好Customer.hbm.xml文件.再定义好一个Dao接口.准备好一个jdbc.propert ...
- spring的HibernateDaoSupport以及HibernateTemplate和jdbcTemplate的选择问题
Xml代码 pring提供访问数据库的有三种方式: HibernateDaoSupport,HibernateTemplate(推荐使用),jdbcTemplate HibernateTempla ...
- Spring testcontext
Spring testcontext FROM: http://www.ibm.com/developerworks/cn/java/j-lo-spring25-test/ Spring 2.5 Te ...
- Spring学习详解(1)——Spring入门详解
2019独角兽企业重金招聘Python工程师标准>>> 一:spring的基本用法: 1,关于spring容器: spring容器是Spring的核心,该 容器负责管理spring中 ...
- Java Hibernate模板 学习总结
使用Hibernate模板 与Hibernate进行交互的主要接口是org.hibernate.Session.这个Session接口提供了基本的数据访问功 能,比如从数据库保存.更新.删除和加载对象 ...
- 深入浅出 Spring
原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7683070.html 前言:笔记中提供了大量的代码示例,需要说明的是,大部分代码示例都是以图片 ...
- Hibernate hql getHibernateTemplate()常用方法汇总
getHibernateTemplate()常用方法 一.find(String queryString); 示例: Java代码 this.getHibernateTemp ...
- 6.SSH框架整合及简单使用示例
6.SSH框架整合 ssh:spring+spring-mvc+hibernate 6.1 整合的场所 :web.xml 跟 5.ssm框架 整合类似,可以对照学习,通过监听器配置hibernate, ...
- oracle能用hql吗,使用HQL查询日期,Oracle报“Invalid number”
如题,Oracle数据库里面有一批记录,现在我想根据其中一个叫:txn_date的字段来查询记录,在Hbm文件中我配置了该HQL,如下所示: select {job.*} from Newslette ...
最新文章
- mysql定制rpm包_mysql运维管理-企业rpm包的定制
- 第五届工业互联网大数据:配件需求29th方案与代码
- matlab练习程序(三阶张量T-QR分解)
- 汉仪尚巍手书有版权吗_为什么“汉仪尚巍手书”会大行天下?
- c# mysql 操作_c#对mysql数据库的基本操作
- BigPipe 大的页面分割成一个一个管道
- Github | 标星20k+ Facebook 开源高效词表征学习库fastText
- 业内最大规模多标签图像数据集开源 | GitHub资源
- ISA2000安装与设置
- win10家庭版添加组策略编辑器,禁用系统自动更新
- PRML 1.6 信息论
- [oracle] Instant Client 即时客户端
- 【css】关于pdf分页(page-break)
- 拼音分词器_自动补全
- android studio的旅游APP的开发和设计
- 2022-iOS个人开发者账号申请流程
- 技术网站 常用的技术网站
- 物联网APP开发的好处有哪些
- php 感叹号有什么用,感叹号!代表什么意思?(标点符号的用法之感叹号)
- 20年寒假实习面经(中科院自动化所、Momenta、百度大搜、字节跳动等)
热门文章
- 【jQuery学习】—jQuery操作元素位置
- iconfont字体图标的使用方法
- 川菜中,你觉得哪道菜能称为“经典之菜”呢?
- python入门——P54论一只爬虫的自我修养1
- qml 连线_将QML信号连接到C 11 lambda插槽(Qt 5)
- 了解SQL Server数据库静态数据及其如何适合数据库生命周期管理
- power bi 背景图_Power BI桌面饼图树
- sql还原数据库备份数据库_如何获取SQL数据库还原历史记录
- SQL Server中的尾日志备份和还原
- t–sql pl–sql_SQL View –完整的介绍和演练