以下是我的情景: 我的应用程序开始一个事务,插入/更新,然后调用一个Web服务。 Web服务有可能需要很长时间来处理请求。有没有办法在我的休眠层中为我的会话/事务配置超时,以便我可以优雅地关闭会话。 附: - 或者我也可以为我的Web服务调用配置一个超时。假设我没有那个自由。我可以在Hibernate中做什么,或者我需要编写自己的自定义逻辑(使用线程连接构造)来实现这些
答案 0 :(得分:3)
您可以在特定查询级别set timeout,或者如果您使用JPA的EntityManager,则可以添加query hint。
理论上,Hibernate默认使用乐观锁定(如果数据库事务隔离级别符合这一点),因此记录永远不会被锁定。因此,即使是持久的交易也不应该严重损害业绩。
如果您使用的是pesimistic锁,可以在Hibernate Session中为它们设置超时。请看Session.LockRequest。