spring 管理hibernate session
来源:互联网 发布:最短路由算法 编辑:程序博客网 时间:2024/05/16 08:21
1.在声明了事务的service对象的中的方法开始执行前,代理对象调用注入的事务管理器判断当前线程中是否已经有绑定好的session,若有则取得该session并开启事务,若没有则通过注入的sessionFactory开启一个新的session,并将其绑定到当前线程,并开启事务。
2.DAO对象中的方法被调用,从当前线程取得session,完成数据库操作(通过HibernateTemplate完成)。
3.service对象中的方法结束后,代理对象提交事务,关闭session。
所以,我们在DAO中的代码应该是通过 this.getHibernateTemplate取得HibernateTemplate对象,通过调用该对象的方法,完成数据库操作。如果要取得 session进行操作(HibernateTemplate完全满足要求:批量操作可以通过hibernate回调函数来实现,不需要另外获取session),也应该用HibernateDaoSupport.getSession()方法。这样确保是从当前线程从取得session。不要用this.getHibernateTemplate.getSessionFactory().openSession()方法,这样是完全新建了一个 session该session将不被配置好的事务管理,需要手动开启事务,异常处理,回滚,提交,关闭session。
也就是说:Spring统一完成Hibernate中的事务管理,在具有事务功能的操作开始前获取Session,然后通过HibernateTemplate来完成具体的操作,最后通过事务来关闭Session完成事务操作。
1 0
- spring 管理hibernate session
- Spring整合Hibernate【Session管理】
- Spring整合Hibernate【Session管理】
- spring+hibernate里session的管理
- spring整合hibernate关于session的管理
- spring整合hibernate关于session的管理
- spring整合hibernate关于session的管理
- spring整合hibernate关于session的管理
- spring整合hibernate关于session的管理 .
- Spring对Hibernate session的管理
- spring管理hibernate获取session方法
- hibernate 管理 Session(单独使用session,非spring)
- Spring管理Hibernate开发 net/sf/hibernate/Session
- hibernate&spring事务管理和session管理的冲突
- spring整合hibernate关于session的管理(转)
- spring对hibernate的session管理的配置
- spring整合hibernate关于 session的管理<三种方式>
- Hibernate,Spring管理获取事务里的Session
- 配置org.springframework.scheduling.quartz.CronTriggerBean
- for循环时间复杂度算法理解
- 优化Android应用内存的若干方法
- 【scala】基于【breeze】编程实现【autoencoder】简单数据降维
- java 版本切换
- spring 管理hibernate session
- LintCode:Swap Two Nodes in Linked List
- mysql 表级锁
- MapReduce 之 数据去重
- XFire与spring进行整合正确方式
- 继承Spring AbstractRoutingDataSource实现路由切换
- 使用Excel计算峰度(Kurtosis)和偏度(Skewness)
- SWT中的常用组件
- sublime快捷键