我正在优化算法的过程中,我注意到Hibernate重复创建和释放更新语句,而不是重复使用它们。这些都来自相同的查询。Spring Hibernate,避免语句重复注册和关闭
15:57:31,589 TRACE [.JdbcCoordinatorImpl]:371 - Registering statement [sql : 'update ...
15:57:31,591 TRACE [.JdbcCoordinatorImpl]:412 - Releasing statement [sql : 'update ...
15:57:31,592 TRACE [.JdbcCoordinatorImpl]:525 - Closing prepared statement [sql : 'update ...
15:57:31,592 TRACE [.JdbcCoordinatorImpl]:278 - Starting after statement execution processing [ON_CLOSE]
15:57:31,594 TRACE [.JdbcCoordinatorImpl]:371 - Registering statement [sql : 'update ...
15:57:31,595 TRACE [.JdbcCoordinatorImpl]:412 - Releasing statement [sql : 'update ...
15:57:31,596 TRACE [.JdbcCoordinatorImpl]:525 - Closing prepared statement [sql : 'update ...
15:57:31,596 TRACE [.JdbcCoordinatorImpl]:278 - Starting after statement execution processing [ON_CLOSE]
15:57:31,597 TRACE [.JdbcCoordinatorImpl]:371 - Registering statement [sql : 'update ...
15:57:31,599 TRACE [.JdbcCoordinatorImpl]:412 - Releasing statement [sql : 'update ...
15:57:31,600 TRACE [.JdbcCoordinatorImpl]:525 - Closing prepared statement [sql : 'update ...
15:57:31,601 TRACE [.JdbcCoordinatorImpl]:278 - Starting after statement execution processing [ON_CLOSE]
算法的主要方法有一个@Scope
和@Transactional
注解。预期的行为是,如果出现任何问题,算法的更新是ROLLBACK
。
下面,算法使用@Service
,它有一个不同的@Scope
也是@Transactional
。该服务是使用Hibernate更新数据库的服务,具有session.update(entity)
。该文档说,默认情况下,嵌套事务如果存在,则重用该事务。
- 上面的肯定是正确的吗?
- 范围更改是否会产生问题?
- 如何让Hibernate在事务处理过程中重复使用该语句?
感谢您的关注