3

我试图弄清楚如何配置我的项目,以使 JPA 在配置的时间后超时并引发异常。有两种情况我希望发生这种情况:

  • 当 JPA 甚至无法连接到数据库时
  • 当 JPA 查询返回结果集的时间超过超时阈值时

我不确定这两种情况是否可以单独配置(每种情况不同的超时阈值),或者是否对两者都使用一个阈值。

我的项目目前设置如下:

  • 编码到 JPA 2.0 规范
  • 使用 Hibernate 3.5.6 作为 JPA 实现
  • 在 Hibernate 中使用 c3p0 连接池
  • 使用persistence.xml配置文件(仅在必要时使用 Hibernate 特定的属性值)
  • 使用任何特定于 Hibernate 的配置文件
4

3 回答 3

7

JPA2 持久性属性“javax.persistence.query.timeout”允许您设置查询的超时时间(假设底层 JDBC 驱动程序支持它)。

于 2010-10-05T16:18:26.690 回答
1

您应该同时设置 Java 客户端和数据库服务器默认超时:如果您使用的是 Spring,请使用 @Transactional(timeout=10) 最终设置preparedStatement.setQueryTimeout() 提示以在10 秒内关闭事务。此外,使您的服务器超时略高于客户端超时,因此“java 客户端用户”超时,例如,在 15 秒内: https ://mariadb.com/kb/en/mariadb/query-limits-and-timeouts/

于 2016-03-31T02:23:01.557 回答
0

Hibernate wiki 上的这个页面详细介绍了如何配置 c3p0 连接池,包括超时设置。

请注意,这些类型的详细信息实际上与 JPA 或 Hibernate 没有太大关系,而是您在 DataSource / 数据库连接(在本例中为 c3p0)本身上设置的设置。

于 2010-10-05T15:55:37.987 回答