在hibernate中设置会话或事务的超时

在hibernate中设置会话或事务的超时,hibernate,session,timeout,settimeout,Hibernate,Session,Timeout,Settimeout,以下是我的设想: 我的应用程序开始一个事务,插入/更新,然后调用一个web服务。web服务处理请求可能需要很长时间。有没有办法在我的hibernate层中为我的会话/事务配置一个超时,以便我可以优雅地关闭会话。 另外,我也可以为我的web服务调用配置一个超时。假设我没有这个自由。在Hibernate中我可以做些什么,或者我需要编写自己的自定义逻辑(使用线程连接构造)来实现这些您可以在特定的查询级别,或者如果您使用JPA的EntityManager,您可以添加 理论上,Hibernate在默认情况

以下是我的设想: 我的应用程序开始一个事务,插入/更新,然后调用一个web服务。web服务处理请求可能需要很长时间。有没有办法在我的hibernate层中为我的会话/事务配置一个超时,以便我可以优雅地关闭会话。 另外,我也可以为我的web服务调用配置一个超时。假设我没有这个自由。在Hibernate中我可以做些什么,或者我需要编写自己的自定义逻辑(使用线程连接构造)来实现这些

您可以在特定的查询级别,或者如果您使用JPA的EntityManager,您可以添加

理论上,Hibernate在默认情况下使用乐观锁定(如果数据库事务隔离级别符合该要求),因此记录在写入或读取时永远不会被锁定。因此,即使是持久的事务也不会严重影响性能


如果您使用的是伪锁,那么可以在Hibernate会话中为它们设置超时。查看。

设置超时和查询提示在我的情况下不起作用,因为我的插入或更新查询将被执行,但我无法提交tran,因为web服务调用尚未返回。LockRequest解决了另一个问题,即我试图获取由于从另一个tran更新而被锁定的行