(Hibernate / JPA)EntityManager与c3p0一起使用时,在同一事务中使用多个连接吗?

时间:2015-03-14 00:12:51

标签: hibernate jpa c3p0

当使用Hibernate / JPA和c3p0时,如果正在保存多个PO,即如果记录被插入到多个表中,在同一个数据库中,在一个(EntityManager)事务中,将休眠使用多个连接来执行此操作或仅使用任何一个连接(来自连接池)?

1 个答案:

答案 0 :(得分:1)

一个事务(例如由begin()启动并由commit() javax.persistence.EntityTransaction提交的事务)与资源池中的相同连接相关联。

例如,在JdbcTransaction中,begin()会将从池中检索到的连接存储到名为managedConnection的私有变量中。当您致电commit()时,它会从此commit调用managedConnection。如果此变量在您调用begin()时已与关联相关联,则会引发TransactionException