首页 新闻 会员 周边 捐助

spring事物配置

0
悬赏园豆:5 [待解决问题]

上面是我的spring配置 问题是我用它执行删除或添加方法时报一下错误,org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.求各位过路得大大帮帮忙啊!

CQGYT的主页 CQGYT | 初学一级 | 园豆:5
提问于:2015-05-21 13:59
< >
分享
所有回答(3)
0
关河冷断 | 园豆:202 (菜鸟二级) | 2015-05-21 16:01
0

上次我也是这个问题,怎么解决忘了,不过你可以咋网上查一下就知道了。

我爱天宫 | 园豆:208 (菜鸟二级) | 2015-06-06 02:49
0

这是spring的只读机制,在annotation下的配置为@Transcational(readOnly=false),xml中的配置为

TransactionDefinition接口定义了一个事务规则,该接口必须指定如下几个属性值:

   ● 事务隔离,当前事务和其他事务的隔离程度。例如,这个事务能否看到其他事务未提交的数据等。

   ● 事务传播,通常,在事务中执行的代码都会在当前事务中运行。但是,如果一个事务上下文已经存在,有几个选项可指定该事务性方法的执行行为。例如,大多数情况下,简单地在现有的事务上下文中运行;或者挂起现有事务,创建一个新的事务。Spring提供EJB CMT(Contain Manager Transaction,容器管理事务)中所有的事务传播选项。

   ● 事务超时,事务在超时前能运行多久。事务的最长持续时间。如果事务一直没有被提交或回滚,将在超出该时间后,系统自动回滚事务。

   ● 只读状态,只读事务不修改任何数据。在某些情况下(例如使用Hibernate时),只读事务是非常有用的优化。

 

 

关于只读事务:

 

看这里,看的时候需要明白引入只读事务的原因,找到原因之后再去理解原因就能理解了。
http://blogs.innodb.com/wp/2011/12/better-scaling-of-read-only-workloads/

增加只读事务的目的是为了判断这个事务是否是只读的,如果是只读的,则会将这个事务放在trx_sys_t::ro_trx_list中,减少copy trx_sys_t::rw_trx_list的开销以及锁导致的速度下降问题。

主要的目标是为了提高性能。

 

xml的配置如第一个截图的答案。关于这个tx:method可配置的选项文章:

 

http://blog.sina.com.cn/s/blog_4a40057401000865.html

 

好好理解下。

洛城秋色 | 园豆:324 (菜鸟二级) | 2015-07-06 11:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册