Hibernate 3.0中的Session.connection()的Close()不起作用

时间:2015-02-03 17:07:27

标签: java mysql hibernate session

我正在使用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不断增加,直到达到

MAX-池大小。

任何人都知道为什么session.connection()。close()不起作用?

1 个答案:

答案 0 :(得分:0)

如果您正在使用hibernate,则必须先创建一个实体管理器,然后才能执行查询。

EntityManagerFactory emf = Persistence.createEntityManagerFactory(" persistence_unit_name");
EntityManager em = emf.createEntityManager();

" persistence_unit_name"是persistence.xml文件中定义的持久性单元的名称。

执行查询的方式如下:

em.createQuery(" SELECT * FROM ORDER WHERE ORDER_ID =?")。setParameter(0,Integer.parseInt(id))。getResultList()