有人可以解释我什么时候应该把readOnly
的值设置为true
,以及当我使用@Transactional
时应该将它设置为false
?关于设置@transactional的值的疑惑
1
A
回答
4
当您只从数据库读取/选择数据并且不更改任何数据时 - 通过执行更新/插入/删除。
如果您可以指定readOnly,那么您应该将其作为资源密集程度低得多。
2
定义非常简单:当且仅当您确保没有更新,插入或删除操作发生在事务内部时,您可以使用readonly=true
。 这优化了dbms的锁定行为(如果支持)。
readonly
默认为false。
最好的问候,
SAM
编辑
/**
* {@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;
1
自定义添加更多的控制您的事务的隔离级别。
如果你知道一个方法是只读的,你应该指定它。
随着readonly = true,您正在向事务管理器说,一个特定的方法只能从DB中读取。这有两个好处:首先,它可以比其他的更快,因为它允许DBMS优化事务(如果支持的话)。其次,它可以帮助您避免死锁问题(例如特定的表被写入锁定时),因为您确保该方法不会执行INSERT或UPDATE。
但是,在这里您可以找到关于它的所有细节: http://docs.spring.io/spring/docs/2.5.x/reference/transaction.html
相关问题
- 1. 关于eclipse插件开发的疑惑
- 2. 关于程序错误的疑惑C
- 3. 关于NFC标签尺寸的疑惑
- 4. 关于neo4j HA设置的疑问
- 5. 关于正确设计程序的疑惑C++
- 6. xslt输出值的疑惑
- 7. 关于设置SQL的困惑
- 8. WordPress的疑惑
- 9. 疑惑
- 10. clezzy有关wso2 ESB的疑惑4.6.0
- 11. 目录和文件相关的疑惑?
- 12. Java字符串池相关的疑惑
- 13. 对Android的疑惑
- 14. mailkit Sendmail的疑惑
- 15. 关于KMP中预处理表格的疑惑
- 16. 关于FATAL EXCEPTION的疑惑:主要由NullPointerException引起
- 17. 关于调用func和语法的Python疑惑
- 18. 关于greendao实体udpate机制的疑惑
- 19. 关于Eclipse SWT ViewPart及其工具栏的疑惑?
- 20. 关于数据库物化和散列表的疑惑
- 21. 关于JDBC资源和JDBC连接池的一些疑惑Glassfish
- 22. 关于冯·诺依曼Arcitechture的图有些疑惑
- 23. 关于网页设计的疑问
- 24. Perl怀疑编码疑惑
- 25. Subversion疑惑?
- 26. 疑惑 - matplotlib
- 27. NSnotifiaction疑惑
- 28. Oracle Schema疑惑?
- 29. 导航疑惑
- 30. NSUserDefaults疑惑