簡體   English   中英

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首次需要連接時,它將從您配置的池中獲取一個連接。 然后,容器確保該連接對其他事務不可用。 事務完成后,容器也將管理諸如commitrollback類的事務操作。

提交是否在每種方法的末尾發出?

不,在每筆交易結束時。 如果您的方法啟動了新事務,則可以。

是否為每個方法創建並關閉了新連接?

和這里一樣。 如果事務正在進行中,並且以前使用過來自同一池的連接,則它將被重用。 否則,您將不會在其他操作中看到自己的更改。 如果您的方法開始新的事務,則可以,您將獲得新的連接(通常只是池連接周圍的新包裝實例,以減少連接/斷開連接的開銷),無論結果如何,它們都將在事務結束時釋放。

該實現可以使用連接池是什么意思?

我想我不完全理解你的問題。

無論如何,通常取決於容器,通常要處理連接池。 如此做EntityManager你的情況。

連接池是一種反復使用相同物理連接以減少連接/斷開連接開銷的方法。

如果仍然不清楚,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM