【发布时间】:2016-04-15 07:25:19
【问题描述】:
如何使用 Java 或 Hibernate 为某些特定查询设置超时。我面临的问题是,我有时必须获取大量数据的某些查询在较长时间内没有响应,从而导致应用程序无响应。
【问题讨论】:
标签: java hibernate jpa settimeout
如何使用 Java 或 Hibernate 为某些特定查询设置超时。我面临的问题是,我有时必须获取大量数据的某些查询在较长时间内没有响应,从而导致应用程序无响应。
【问题讨论】:
标签: java hibernate jpa settimeout
Hibernate 查询有setTimeout() 方法
Query query = session.createQuery(someQueryString);
query.setTimeout(theTimeOut);
【讨论】:
JPA standard 属性 javax.persistence.query.timeout 也可以作为“提示”提供给每个查询。
query.setHint("javax.persistence.query.timeout", someTimeout);
因此避免将您的代码绑定到一个 JPA 提供程序或另一个。
【讨论】:
Hibernate 支持事务超时:
//set transaction timeout to 5 seconds at session
Session sess = factory.openSession();
sess.getTransaction().setTimeout(5);
您也可以在query level进行设置。
Query q = sess.createQuery("from....")
.setTimeOut(3);
【讨论】: