簡體   English   中英

持久性單元的多次登錄?

[英]Multiple logins of a persistence unit?

大家好,我在Java SE項目中將Eclipse鏈接用於JPA。 我為數據庫中的每個表使用“ jpa控制器”類(這是正確的方法)。 我還為每個“ jpa控制器類”提供了一個EntityManagerFactory,以便我可以獲取Entitymanager。 程序啟動時,顯示AnalyzerPU登錄成功2次。 我應該只使用一個EntityManagerFactory嗎? 似乎對於我擁有的每個人都顯示登錄。 如果繼續前進,我將有12個登錄名,數據庫中的每個表1個。 我知道這不正確嗎?

public class PkgLineControllerImpl extends AbstractController implements PkgLineController {

private EntityManagerFactory emf = null;

public PkgLineControllerImpl() {

    super(StateHistoryImpl.class);
    emf = Persistence.createEntityManagerFactory("StateHistoryAnalyzerPU");
}

public EntityManager getEntityManager() {
    return emf.createEntityManager();
}

@Override
public List<PkgLine> findAll() {
    EntityManager em = getEntityManager();

    List<PkgLine> pkgLineList = new ArrayList<PkgLine>();

    try {
        pkgLineList = em.createNamedQuery("PkgLine.findAll").getResultList();
        return pkgLineList;
    } finally {
        em.close();
    }
}

}

這就是我布置控制器的方式。感謝您的幫助。

有時它將執行此操作。

[EL Info]: 2011-02-01 14:34:07.991--ServerSession(18450577)--EclipseLink, version: Eclipse Persistence Services - 2.0.2.v20100323-r6872
[EL Info]: 2011-02-01 14:34:08.381--ServerSession(18450577)--fileStateHistoryAnalyzerPU login successful
100
200
100
200
100
null
null
null
null
null

有時它將執行此操作。

Persistence Services - 2.0.2.v20100323-r6872
[EL Info]: 2011-02-01 14:34:08.381--ServerSession(18450577)--fileStateHistoryAnalyzerPU login successful
100
200
100
200
100
Persistence Services - 2.0.2.v20100323-r6872
[EL Info]: 2011-02-01 14:34:08.381--ServerSession(18450577)--fileStateHistoryAnalyzerPU login successful
null
null
null
null
null

null為一個JPAController類方法返回一些數據,而數字為另一個JPA控制器類返回數據。 我已經在一個AbstractClass中放置了一個entitymanagerfactory,但它仍在這樣做。

您應該有一個EntityManagerFactory,每個事務/請求/會話有一個EntityManager。 您還應該擁有一個包含所有類的持久性單元。

從技術上講,創建具有相同持久性單元名稱且沒有參數的多個工廠應該共享相同的持久性單元,緩存/連接池,但是如果您具有不同的持久性單元,則每個持久化單元都將具有自己的緩存/連接池。

暫無
暫無

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

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