EntityManager JDBC 连接使用情况
EntityManager JDBC connection usage
@PersistenceContext(unitName = "myPU")
private EntityManager em;
public void run1()
{
// uses em
}
public void run2()
{
// uses em
}
据我了解,每种方法代表不同的交易。
我很难弄清楚什么是等价物
使用普通 JDBC 的代码可能是,尤其是在 JDBC 连接使用方面。
是否在每个方法结束时发出提交?
是否为每个方法创建和关闭了新连接?
实现可以使用连接池是什么意思?
在大多数情况下:视情况而定。
在您的情况下,如果在不同的事务中调用这些方法,您将获得每个 bean 的 EntityManager
。
通常 SQL 连接的获取是惰性的。因此,当 EntityManager
第一次需要连接时,它将从您配置的池中获取一个。然后容器确保连接对其他事务不可用。事务完成后,commit
或 rollback
等事务性操作也由容器管理。
Is commit issued at the end of each method ?
不,在每笔交易结束时。如果您的方法启动了新事务,那么可以。
Is a new connection created and closed for each method ?
这里也一样。如果事务正在进行中并且之前使用过来自同一池的连接,那么它将被重用。否则您将不会在其他一些操作中看到您自己的更改。如果您的方法开始新事务,那么是的,您将获得新连接(通常只是池连接周围的新包装器实例以减少 connect/disconnect 开销)并且无论结果如何,它们都会在事务结束时被释放.
What does it mean that the implemenation could use a connection pool ?
我想我没有完全理解你的问题。
根据您的容器,您通常会处理连接池。 EntityManager
你的情况也是如此。
连接池是一种反复使用相同物理连接的方法,如前所述,可以减少 connect/disconnect 开销。
如果还有什么不明白的,请告诉我。
@PersistenceContext(unitName = "myPU")
private EntityManager em;
public void run1()
{
// uses em
}
public void run2()
{
// uses em
}
据我了解,每种方法代表不同的交易。
我很难弄清楚什么是等价物
使用普通 JDBC 的代码可能是,尤其是在 JDBC 连接使用方面。
是否在每个方法结束时发出提交?
是否为每个方法创建和关闭了新连接?
实现可以使用连接池是什么意思?
在大多数情况下:视情况而定。
在您的情况下,如果在不同的事务中调用这些方法,您将获得每个 bean 的 EntityManager
。
通常 SQL 连接的获取是惰性的。因此,当 EntityManager
第一次需要连接时,它将从您配置的池中获取一个。然后容器确保连接对其他事务不可用。事务完成后,commit
或 rollback
等事务性操作也由容器管理。
Is commit issued at the end of each method ?
不,在每笔交易结束时。如果您的方法启动了新事务,那么可以。
Is a new connection created and closed for each method ?
这里也一样。如果事务正在进行中并且之前使用过来自同一池的连接,那么它将被重用。否则您将不会在其他一些操作中看到您自己的更改。如果您的方法开始新事务,那么是的,您将获得新连接(通常只是池连接周围的新包装器实例以减少 connect/disconnect 开销)并且无论结果如何,它们都会在事务结束时被释放.
What does it mean that the implemenation could use a connection pool ?
我想我没有完全理解你的问题。
根据您的容器,您通常会处理连接池。 EntityManager
你的情况也是如此。
连接池是一种反复使用相同物理连接的方法,如前所述,可以减少 connect/disconnect 开销。
如果还有什么不明白的,请告诉我。