HibernateTemplate
在学spring,看到一个帖子,问HibernateTemplate是不是自己有事务,大家都说有。如果有,那为什么需要在Spring的配置文件中配置事务呢?看了看HibernateTemplate的代码,也看不出来
故请教大家:
HibernateTemplate中有事务处理吗?
HibernateTemplate中有事务处理,那Spring为何还需配置事务?
HibernateTemplate一般出现在DAO层。他所谓的事务一般都是针对单条SQL而言。因为HibernateTemplate中的方法都是一次执行一条SQL的。
而spring中的事务是针对service层的,因为在业务逻辑层,设计到业务时都是调用DAO层的基本方法组合实现逻辑的,比如转账,需要先扣,在增,此时对于service这属于一个动作。
举个例子吧。
比如执行单条SQL: UPDATE table_name SET name = 'xxx' WHERE id = ?
使用HibernateTemplate的update方法时,如果执行错误那么数据库是可以回滚的。
如果执行多条SQL:UPDATE table_name SET name = 'xxx' WHERE id = ?;UPDATE table_name1 SET name = 'xxx' WHERE id = ?
使用HibernateTemplate时,需要执行两次update方法,但此时就会出现错误,HibernateTemplate是不会对两条SQL的结果回滚的,可能会操成一条成功一条失败,此时就需要spring的事务了。因为两条以上的SQL就算是业务逻辑的。
HibernateTemplate没有设置session的事务属性,HibernateTemplate的作用是保证session能够正确的打开和关闭,避免手工管理session带来的问题。
可以通过下面的方式处理事务
getHibernateTemplate().execute(
new
HibernateCallback() {
public
Object doInHibernate(Session session)
throws
HibernateException, SQLException {
session.connection().setAutoCommit(
false
);
Student stu1=
new
Student();
stu1.setName(
"aaaa"
);
session.save(stu1);
Student stu2 =
new
Student();
session.save(stu2);
session.flush();
//向数据库发送sql
session.connection().commit();
return
null
;
}
});
转载于:https://blog.51cto.com/yjm199/1834453
HibernateTemplate相关推荐
- HibernateTemplate 的常见用法
HibernateTemplate 提供了非常多的常用方法来完成基本的操作,比如增加.删除.修改及查询等操作,Spring 2.0 更增加对命名 SQL 查询的支持,也增加对分页的支持.大部分情况下, ...
- spring入门(12)-spring与hibernate整合完成增删改查的操作(继承HibernateDaoSupport调用hibernateTemplate类)
本文是在上一篇博文的基础之上,通过继承HibernateDaoSupport调用hibernateTemplate类,只要将UserDaoImpl.java改为继承HibernateDaoSuppor ...
- spring入门(11)-spring与hibernate整合完成增删改查的操作(封装HibernateTemplate模版类对象)
今天是spring的最后一节课,这节课老师讲了spring与hibernate整合完成增删改查的操作,这是很重要的一节课,这也是第一次真正的实现spring结合Hibernate和数据库连接上,下面是 ...
- HibernateTemplate、HibernateDaoSupport两种方法实现增删改查Good
Spring+Hibernate两种方法实现增删改查 首先,定义一个Customer的bean类,设置好Customer.hbm.xml文件.再定义好一个Dao接口.准备好一个jdbc.propert ...
- spring的HibernateDaoSupport以及HibernateTemplate和jdbcTemplate的选择问题
Xml代码 pring提供访问数据库的有三种方式: HibernateDaoSupport,HibernateTemplate(推荐使用),jdbcTemplate HibernateTempla ...
- hibernateTemplate的load方法
hibernateTemplate的load方法采用延迟加载,所以应当注意. 如果配置不当,采用此方法获取对象,往往会出现异常: javax.servlet.ServletException: org ...
- Java程序员从笨鸟到菜鸟之(八十一)细谈Spring(十)深入源码分析Spring之HibernateTemplate 和HibernateDaoSupport
spring提供访问数据库的有三种方式: HibernateDaoSupport HibernateTemplate(推荐使用) jdbcTemplate(我们一般不用) 类所在包: Hibernat ...
- Spring之HibernateTemplate 和HibernateDaoSupport
spring提供访问数据库的有三种方式: HibernateDaoSupport HibernateTemplate(推荐使用) jdbcTemplate(我们一般不用) 类所在包: Hibernat ...
- HibernateTemplate的一些常用方法总结
1:get/load存取单条数据 public Teacher getTeacherById(Long id) { return (Teacher)this.hibernateTemplate.get ...
最新文章
- XGBoost类库使用小结
- 互联网元年:如何提升自己?
- 【转】Matlab axis用法
- Python学习13 异常处理机制
- ORA-01113:文件n需要介质恢复 (转载)
- Java中方法的重载(overload)与重写/覆写(override)
- 【工艺】集成电路中的工艺及其方式
- php微信实现红包雨,怎么制作微信红包雨(微信红包雨特效)
- 2022QS榜单发布!计算机专业排名MIT霸榜,清华排15,北大跌出TOP20
- win7开启uasp协议_Windows To Go安装使用手记
- 服务器卡logo显示2f,战争机器4卡LOGO界面解决办法
- 餐厅预订系统有哪些?餐厅预订系统怎么选择?
- 临时或永久修改cgroup和Cgroup 入门教程:cpuset
- 决策树分类算法的案例(代码实现及运行测试)
- 微博短链接生成 php,新浪微博API生成短链接
- 如何识别骗子广告联盟,骗子广告联盟常用手段
- 机器人单关节力矩控制
- 电子班牌系统服务器,智慧校园电子班牌系统解决方案
- Mac OS terminal 查看内存使用情况的命令
- 模板卷积Template Convolution