anwsion的数据库表类型innodb myisam 区别和MyISAM有何差别?选哪个更好

当前位置: →
→ 运用HibernateSpring和MySQL时,谨慎选择MySQL的表类型
运用HibernateSpring和MySQL时,谨慎选择MySQL的表类型
& 作者:佚名 & 来源: 互联网 & 热度:
&收藏到→_→:
摘要: 使用Hibernate、Spring和MySQL时,谨慎选择MySQL的表类型 Hibernate采用的是write-behind的策略。MySQL的MyISAM类型,是不支持...
"运用HibernateSpring和MySQL时,谨慎选择MySQL的表类型"::
使用hibernate、spring和时,谨慎选择的表类型
hibernate采用的是write-behind的策略。的myisam类型,是不支持事务的,innodb类型支持事务。
现在有如下方法,假设表类型为myiasm。
@transaction
public void somemethod(user user) {
user.setage(28);
update(user);
xxxdao.updatecategory(user.getcategory());
throw new runtimeexception();
现在,执行这个方法,会发生什么事情呢?可以发现,用户被更新了,但是,xxxdao执行的更新被回滚了。
天哪,太可怕了!是这样的,flush()会导致hibernate将session中的内容同步到,但是此时还是可以回滚的,前提是支持事务。否则就一定会被同步到,但是下面那条语句,因为抛出了异常,实际上session内缓存的内容是没有同步到的。
将表类型修改为innodb后,问题解决,可以正确回滚。所以,平常写程序的过程中,尤为注意,要慎用flush(),且一定要谨慎选择的表类型,重要数据的表,一定要采用innodb类型,确保事务可以正确执行。
另外,不仅是flush()会立即将session的内容同步到,自增主键的表,当执行insert的时候,也一样会立即写入数据,因为持久化对象必须拥有一个主键,加入您采用了myiasm,且这个方法有事务,后面还抛出了异常的话。那个之前的保存是不会再回滚了,已经写入到了。
搜索此文相关文章:此文来自: 马开东博客
网址: 站长QQ
上一篇:没有了
运用HibernateSpring和MySQL时,谨慎选择MySQL的表类型_MySQL相关文章
MySQL_总排行榜
MySQL_最新
MySQL_月排行榜
MySQL_周排行榜
MySQL_日排行榜}

我要回帖

更多关于 innodb和myisam 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信