关于spring整合hibernate使用update无异常但没有效果(不输出sql语句)
2016-08-25 12:01
489 查看
单独使用hibernate时
openSession()
在没有使用spring控制事务时,使用的是sessionFactory.openSession()。这样每个方法都会新建一个session,必须在方法中控制和关闭session。于是一开始我直接在try-with-resource语句中使用session的update等方法,无任何事务,在单元测试时发现update方法和delete方法无效。
解决方法有两种:
加上事务控制:
session.beginTransaction()和trans.commit()
加上flush方法:
session.flush()
getCurrentSession()
使用getCurrentSession创建的session会绑定到当前线程,并会在commit或rollback后自动关闭使用currentSession,就必须使用事务管理
使用Spring事务管理
需要使用getCurrentSession获取session在操作中不要显示的关闭session
不需要进行编码式事务,使用声明式事务
实例:
1. 在spring配置文件中添加如下代码<!--hibernate事务--> <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <!--aop管理事务--> <aop:config> <aop:pointcut expression="execution(* wo.idao.*.*(..))" id="daoCut"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="daoCut"/> </aop:config> <tx:advice transaction-manager="txManager" id="txAdvice"> <tx:attributes> <tx:method name="get*" read-only="true" /> <tx:method name="*" propagation="SUPPORTS" /> </tx:attributes> </tx:advice>
此时的dao层只需要简单的
session().update(entity)就行了。
再次单元测试,ok了
相关文章推荐
- 关于spring整合hibernate使用update无异常但没有效果(不输出sql语句)
- ssh整合思想 Spring与Hibernate的整合ssh整合相关JAR包下载 .MySQLDialect添加了第57区的方言解决没有异常,hibernate.dialect核心配置文件就是无法自动update创建表
- 关于spring4和hibernate4整合,配置事务报“Cannot unwrap to requested type [javax.sql.DataSource]”错误的解决方法及心得
- Spring3+MyBatis3整合无法输出SQL语句问题的解决
- 关于Hibernate在使用原生SQL语句多表查询所遇到的问题
- 执行了getHibernateTemplate.save(user)后,控制台有hql语句输出,显示已经将数据存到数据库了,也没有抛出异常,但是去oracle数据库查的时候,压根就没有数据。。。。请问
- spring 4.3.3和hibernate 5.2.3整合 关于报“unable to load class org.hibernate.cfg.Configuration”异常
- Spring3+MyBatis3整合log4j无法输出SQL语句问题的解决
- 使用hibernate进行update和save的时候不成功,控制台也不报错,使用sql语句就能成功
- Spring 使用Hibernate事务管理:update等操作无效果问题
- spring整合log4j配置仅输出mybatis/ibatis的sql语句
- spring整合hibernate使用update方法时出现 illegally attempted to associate a proxy with two open Sessions
- 关于使用hibernate时的sql异常
- 使用spring-boot-starter-data-jpa 怎么配置使运行时输出SQL语句
- [转]Spring3+MyBatis3整合无法输出SQL语句问题的解决 .
- dao层用Hibernate 查询 返回null无值、并且控制台没有输出SQL日志,也没有报任何异常
- Spring3+MyBatis3整合无法输出SQL语句问题的解决
- 关于spring整合hibernate 懒加载异常解决方案
- 使用spring-boot-starter-data-jpa 怎么配置使运行时输出SQL语句
- 关于oracle的sql语句中 for update 的使用,以及存在的问题