【发布时间】:2015-04-02 23:47:45
【问题描述】:
我正在使用 Hibernate3.0、jdk 1.5 和 jboss-4.0.3,我需要使用 Session.connection() 在我的应用程序中的某处进行直接 SQL 调用。
代码看起来像
String strSQL = "SELECT * FROM ORDER WHERE ORDER_ID = ?";
PreparedStatement pstmt = session.connection().prepareStatment(strSQL);
pstmt.setInt(1, Integer.parseInt(id));
ResultSet rs = pstmt.executeQuery();
while (rs.next())
{
//do work
}
rs.close();
pstmt.close();
session.flush();
session.connection().close();
但是在 jmx-console 上,InUseConnectionCount 一直在增加,直到达到
最大池大小。
有人知道为什么 session.connection().close() 不起作用吗?
【问题讨论】:
-
Session是java.sql.Connection的包装。您应该只调用Session#close并让Hibernate 为您关闭内部Connection。 -
@LuiggiMendoza 我也试过 session.close() 也没有工作。
标签: java mysql hibernate session