Hibernate中设置事务自动提交
在项目开发过程中,出现了这样的问题:
通过页面表单提交数据,这些数据就是要修改数据库中的数据,表单提交之后,程序运行一切正常,而且,后台也打印出了sql语句,例如:insert into SYS.HNCITEM05 (SNAME, BATE, SONO, SDATE, SNO) values (?, ?, ?, ?, ?),而且,该项目有这样的功能:就是在执行数据插入成功后,自动跳转到数据清单页面,而且,在该页面自动更新刚才插入的数据。而且,刚才通过表单提交的数据也能在该页面看到,数据似乎已经成功插入到数据库(Oracle)了。但是,别高兴太早:
我打开PL/SQL Developer之后,在sql命令窗口输入查询数据库信息的sql语句,却查不到刚才插入的数据。就是说:数据并没有真正写入数据库。
我分析原因,1、可能是程序进行数据读写都是在所谓的一级缓存中进行的,然后,我就进行了很多Hibernate的属性设置:<property name="query.substitutions">true 'Y', false 'N'</property>
<property name="cache.use_second_level_cache">true</property>
<property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
但是,这些设置对程序运行没有作用。
最后,查阅资料,在Hibernate配置文件中进行了如下设置 :
<property name="connection.autocommit">true</property>
(<!-- 设置事务自动提交(默认为false,false的话,程序对数据库的操作都不会作为事务提交) -->)
一切就OK了。
转载于:https://blog.51cto.com/wht6650/1345774