在Hibernate API中,有一个属性hibernate.connection.autocommit可以设置为true.
但在接口中,他们提到不建议这样设置:
为JDBC池连接启用自动提交(不是
为什么不推荐呢? 将此属性设置为true有什么不良影响?
在Hibernate API中,有一个属性hibernate.connection.autocommit可以设置为true.
但在接口中,他们提到不建议这样设置:
为JDBC池连接启用自动提交(不是
为什么不推荐呢? 将此属性设置为true有什么不良影响?
所有数据库语句都在物理事务的上下文中执行,即使我们没有显式声明事务边界(BEGIN/COMMIT/ROLLBACK).
如果不声明事务边界,则必须在单独的事务中执行每条语句.这甚至可能导致每个语句打开和关闭一个连接.
将服务声明为@Transaction将为您提供整个事务持续时间的一个连接,并且所有语句都将使用该单个隔离连接.这比一开始就不使用显式事务要好得多.在大型应用程序中,您可能有许多并发请求,降低数据库连接获取请求率肯定会提高应用程序的整体性能.
所以经验法则是:
如果您的只读事务只执行一个查询,则可以为这些事务启用自动提交.
如果您的事务包含多条语句,则需要禁用自动提交,因为您希望所有操作都在单个工作单元中执行,并且不想给连接池带来额外压力.