使用mysql数据库,hibernate事务不起作用
2012-08-08 20:37
288 查看
初学hibernate,但是遇到添加hibernate事务后,事务却不起作用,那个灰常的郁闷啊,代码就简单的利用hibernate事务存数据,但是异常后事务却不回滚,万分的郁闷。
最后经过谷歌百度发帖请教,终于解决,在此总结,
mysql的表是有事务安全( 比如:InnoDB)和非事务安全(比如:ISAM、MyISAM)之分的,随即登录到mysql数据库查看:
由此发现当前表的类型是MyISAM,是非事务安全的,所以是无法实现数据回滚。
到此,只要修改表的类型即可:
方法如下:
直接修改即可:
解决方法:
首先,关闭mysql数据库,暂停掉mysql服务,然后找到mysql安装目录下的my.ini文件,找到skip-innodb,在前面加上#号,重新启动mysql服务,再做修改。
如果是用hibernate自动建表,而mysql数据库默认的建表类型不是InnoDb,需要修改配置文件:
最后经过谷歌百度发帖请教,终于解决,在此总结,
mysql的表是有事务安全( 比如:InnoDB)和非事务安全(比如:ISAM、MyISAM)之分的,随即登录到mysql数据库查看:
mysql> show create table tb_user; +---------+--------------------------------------------- ---------------------------------------+ | Table | Create Table | +---------+--------------------------------------------- ---------------------------------------+ | tb_user | CREATE TABLE `tb_user` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255) default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 | +---------+--------------------------------------------- ---------------------------------------+
由此发现当前表的类型是MyISAM,是非事务安全的,所以是无法实现数据回滚。
到此,只要修改表的类型即可:
方法如下:
直接修改即可:
alter
table
tablename type=InnoDb;
但是此时可能出现错误:The InnoDB feature is disabled; you need MySQL built with InnoDB
解决方法:
首先,关闭mysql数据库,暂停掉mysql服务,然后找到mysql安装目录下的my.ini文件,找到skip-innodb,在前面加上#号,重新启动mysql服务,再做修改。
如果是用hibernate自动建表,而mysql数据库默认的建表类型不是InnoDb,需要修改配置文件:
<property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
相关文章推荐
- SpringAOP整合Hibernate并使用事务(模拟买书的过程)
- Spring整合Hibernate开发 - 使用事务管理器操作数据库 - 主配置文件
- 使用Hibernate的session执行任意SQL语句以及整个事务
- Hibernate整合进spring---使用自己的事务处理
- JavaEE框架——hibernate的使用(关于hibernate事务的必须开启的问题)
- 使用Hibernate向mysql数据库中插入中文,数据库中显示??乱码
- hibernate之hibernate应用程序中的事务(使用JTA的编程式事务)
- 使用hibernate往mysql数据库插入数据中文乱码问题
- 使用Hibernate框架操作MySQL数据库插入中文字符时出现乱码
- 使用Hibernate向mysql数据库中插入中文,数据库中显示??乱码
- Hibernate Tip: 使用JBOSS MBEAN时,Session会在事务提交后自动关闭!
- 使用Hibernate向mysql数据库中插入 bd08 中文,数据库中显示??乱码
- Spring整合hibernate的事务属性介绍以及声明式事务管理 (使用Annotation和xml)
- Java学习之道:纯Hibernate使用-不用spring事务管理
- spring-hibernate整合 事务不起作用
- 使用Hibernate向MySQL数据库中存取文件
- Spring中GetTemplate使用中,事务控制没有在Session的生命周期内起作用,而是中途提交了事务
- Hibernate使用Spring进行单元测试时的事务问题
- MySQL数据库与hibernate一起使用时别名不生效的问题
- 使用Hibernate连接MySQL数据库发生closed.Connection问题的一种解决方法