我正在使用使用BoneCp访问mysql数据库的播放应用程序(play-java 2.2.1,bonecp 0.8.0.RELEASE),并且没有找到为所有语句设置语句超时的方法(conf doc here)。 我发现的只是如何以编程方式执行:
java.sql.Statement.setQueryTimeout(int)
我可能最终用一个将设置该值的对象包装所有创建的语句,但我想我可以在配置文件中设置它。
我知道我可以使用spring或其他框架并设置某种"事务超时"价值,但我想避免这种情况。
谢谢!
答案 0 :(得分:1)
您可以fork BoneCP并调整StatementHandle类以在构造函数中的internalStatement
上设置默认语句超时(可能滥用QueryExecuteTimeLimit配置选项,它是已在this.queryExecuteTimeLimit
的构造函数中使用。
您还可以使用JPA/Hibernate with Play来设置default query timeout。是的,这意味着使用框架,但默认语句超时通常不是数据库连接池的一部分。
请注意,查询/语句超时与事务超时不同。 “事务超时用于将总语句处理时间限制为允许的最大数量”,语句超时是“限制语句应运行多长时间”(从this article章节复制“什么是事务超时? “和”什么是语句超时?“)。