[英]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
類的事務操作。
提交是否在每種方法的末尾發出?
不,在每筆交易結束時。 如果您的方法啟動了新事務,則可以。
是否為每個方法創建並關閉了新連接?
和這里一樣。 如果事務正在進行中,並且以前使用過來自同一池的連接,則它將被重用。 否則,您將不會在其他操作中看到自己的更改。 如果您的方法開始新的事務,則可以,您將獲得新的連接(通常只是池連接周圍的新包裝實例,以減少連接/斷開連接的開銷),無論結果如何,它們都將在事務結束時釋放。
該實現可以使用連接池是什么意思?
我想我不完全理解你的問題。
無論如何,通常取決於容器,通常要處理連接池。 如此做EntityManager
你的情況。
連接池是一種反復使用相同物理連接以減少連接/斷開連接開銷的方法。
如果仍然不清楚,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.