我已经激活了Hibernate统计信息,并且我正在运行一个存储过程,该过程通过从sessionFactory检索到的 StatelessSession 返回大量记录。稍后,结果将使用 ScrollableResultset 写入文件。
Hibernate配置为使用连接池,会话上下文是线程。
这是我的代码:
StatelessSession session= sessionFactory.openStatelessSession();
Query query = session.createSQLQuery("EXEC myStoredProcedure");
sessionFactory.getStatistics().logSummary();
然后,可滚动的结果集将被传递给一个写入者,并且最终在所有记录被写入文件之后它将被关闭。
我运行了这部分代码几次,如下所示:
第一次
会议开幕:11 会议结束:10 交易:6 成功交易:6 乐观锁失败:0 冲洗:3 获得的连接:11 编制的声明:9 声明已结束:0
第二次
会议开幕:17 会议结束:16 交易:12 成功交易:12 乐观锁失败:0 冲:5 获得的连接数:17 编制的声明:12 声明已结束:0
第三次
会议开幕:20 会议结束:19 交易:15 成功交易:15 乐观锁失败:0 冲:6 获得的连接数:20 编制的声明:13 声明已结束:0
第四次
会议开幕:23 会议结束:22 交易:18 成功交易:18 乐观锁失败:0 冲:7 获得的连接数:23 编制的声明:14 声明已结束:0
第二次之后,您可以看到获得的连接数每次增加3。
我的问题是: 1)为什么数字增加3而不仅仅是1? 2)为什么总会少一个Sessions关闭?我的意思是我们(在第三次的情况下)20开放和19关闭。