任何人都可以解释我什么时候应该设置readOnly
价值true
,什么时候应该设置它,false
什么时候使用它@Transactional
?
问问题
418 次
3 回答
4
当您仅从数据库中读取/选择而不更改任何数据时 - 通过执行更新/插入/删除。
如果您可以指定 readOnly ,那么您应该使用更少的资源。
于 2013-09-27T17:30:19.447 回答
2
定义非常简单:readonly=true
当且仅当您确保事务内部不发生更新、插入或删除操作时,您才可以使用。如果支持,这会优化您的 dbms 的锁定行为。
readonly
默认为假。
此致,
山姆
编辑
/**
* {@code true} if the transaction is read-only.
* Defaults to {@code false}.
* <p>This just serves as a hint for the actual transaction subsystem;
* it will <i>not necessarily</i> cause failure of write access attempts.
* A transaction manager which cannot interpret the read-only hint will
* <i>not</i> throw an exception when asked for a read-only transaction.
* @see org.springframework.transaction.interceptor.TransactionAttribute#isReadOnly()
*/
boolean readOnly() default false;
于 2013-09-27T17:32:10.637 回答
1
自定义隔离级别可以为事务添加更多控制。
如果你知道一个方法是只读的,你应该指定它。
使用 readonly=true 您是在对事务管理器说,一种特定方法只能从数据库中读取。这有两个优点:
首先,它可以比其他的更快,因为它允许 DBMS 优化事务(如果支持)。其次,它可以使您免于死锁问题(例如,当特定表被写锁定时),因为您确保该方法不会执行 INSERT 或 UPDATE。
但是,您可以在这里找到有关它的所有详细信息:http: //docs.spring.io/spring/docs/2.5.x/reference/transaction.html
于 2013-09-27T22:42:12.163 回答