java entity数据库连接_java – entitymanager.close()没有关闭与数据库的连接

我正在开发一个测验系统,我是JPA&休眠.我已经使用了hibernate 4.2.3并且我使用了c3p0连接池.

代码工作正常,但每个EntityManager创建一个永不关闭的连接.一旦达到最大连接数,则应用程序无法访问数据库.

我正在使用

MySQL 5.6.10,当我在工作台中看到连接时,我从未看到连接被破坏.应用程序不会重用连接.

我的猜测是连接不会返回到连接池.我不知道我怎么写“manager.close()”.

hibernate内部连接池也是如此. (如果我删除c3p0.)

以下是“persistence.xml”的属性

这是我如何访问EntityManagerFactory

public class EntityMangFactory {

private static EntityManagerFactory emf=null;

private static void initEntityManagerFactory()

{

emf=Persistence.createEntityManagerFactory("com.oes.jpa"); //persistence-unit-name//

}

public static EntityManagerFactory getEntityManagerFactory()

{

if(emf==null){

initEntityManagerFactory();

}

return emf;

}

}

这是我访问数据库的方式.

public static List getMarks(int id){

EntityManagerFactory factory= EntityMangFactory.getEntityManagerFactory();

EntityManager manager= factory.createEntityManager();

manager.getTransaction().begin();

TypedQuery q= manager.createQuery("select new com.examsystem.DTO.MarksDTO(m.courseId,m.score,m.setNo,m.courseName) from MarksBean as m where TraineeID=:TraineeID",MarksDTO.class);

q.setParameter("TraineeID", id);

List ls=q.getResultList();

manager.close();

return ls;

}

请指出我错在哪里.

提前致谢.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值