关于使用事务从数据库中读取的看法似乎有很多不同.
来自DeveloperWorks文章的引用交易策略:模型和策略概述:
如果您只是在阅读数据,为什么还需要交易?答案是你没有.启动事务以执行只读操作会增加处理线程的开销,并可能导致数据库上的共享读锁(取决于您使用的数据库类型以及隔离级别设置的内容).
作为相反的意见,Hibernate文档中有以下引用非事务性数据访问和自动提交模式
我们的建议是不在应用程序中使用自动提交模式,并且仅在具有明显性能优势或未来代码更改的可能性很小时才应用只读事务.无论您是读取还是写入数据,始终更喜欢常规ACID事务来对数据访问操作进行分组.
也有EclipseLink的邮件列表上一个类似的争论在这里.
真相在哪里呢?交易是否为最佳实践?如果两者都是可行的解决方案,使用交易的标准是什么?
据我所知,只有隔离级别高于'read committed'才会有所不同.它是否正确?
有哪些经验和建议?