关于使用事务从数据库中读取,似乎有很不同的观点。只读数据库访问事务?
从developerWorks文章Transaction strategies: Models and strategies overview报价:
为什么你会需要一个事务,如果 你只是读取数据?答案 是你没有。启动 交易执行只读 操作增加了 处理线程的开销,并可能导致数据库共享上 读锁(视 于你正在使用 数据库的类型和什么隔离级别设置 )。
由于相反的意见,有来自Hibernate文档以下报价Non-transactional data access and the auto-commit mode
我们的建议是在应用程序中不使用 自动提交模式,并 申请只读只 时交易有一个明显的表现 好处或当未来的代码更改 是不太可能的。无论您是读取数据还是写入数据,始终优先选择 常规ACID事务,以便将您的数据访问操作分组为 , 或 。
在EclipseLink邮件列表here上也有类似的争论。
那么谎言的真相呢?是否阅读最佳做法的交易?如果两者都是可行的解决方案,那么使用交易的标准是什么?
就我所见,只有当隔离级别高于'读取提交'时才会有所作为。它是否正确?
有什么经验和建议?