我正在试图弄清楚如何配置我的项目,以便JPA将超时并在配置的时间后抛出异常。有两种情况我希望这种情况发生:
我不确定是否可以单独配置这两种方案(每种方案的超时阈值不同),或者两者都使用一个阈值。
我的项目目前设置如下:
persistence.xml
配置文件(仅在必要时使用特定于Hibernate的属性值)答案 0 :(得分:7)
JPA2持久性属性“javax.persistence.query.timeout”允许您设置查询的超时(假设底层JDBC驱动程序支持它)。
答案 1 :(得分:1)
您应该同时设置Java客户端以及数据库服务器默认超时: 如果您使用的是Spring,请使用@Transactional(timeout = 10),它最终设置preparedStatement.setQueryTimeout()提示以在10秒内关闭事务。 此外,使您的服务器超时略高于客户端超时,以便#34; Java客户端用户"例如,在15秒内超时: https://mariadb.com/kb/en/mariadb/query-limits-and-timeouts/
答案 2 :(得分:0)
This page on the Hibernate wiki详细说明了如何配置c3p0连接池,包括超时设置。
请注意,这些类型的细节与JPA或Hibernate没有多大关系,但是您在DataSource /数据库连接(本例中为c3p0)本身设置的设置。