假设我有一个EntityManager
object em
,并且我有以下伪代码:
@PersistenceContext(unitName = "myPU")
private EntityManager em;
public void runQuery()
{
for(int i=0; i<100; i++)
{ Query q = em.createNativeQuery(someQuery);
List list = q.getResultList();
//process result
...
...
}
}
entityManager 是如何管理底层数据库连接的?上述代码是否只有 1 个连接会话或 100 个会话?
我问的原因是,对于每个连接会话,我需要在运行查询之前创建一个临时表。我想做的是这样的:
for(int i=0; i<100; i++)
{ //first check if temp table does not exist
createTemptTable;
// then run the query
Query q = em.createNativeQuery(someQuery);
List list = q.getResultList();
//process result
...
...
}
但是我怎么能确定它会在同一个会话中创建表和运行查询呢?