java - 持久性单元的多次登录?

标签 java mysql jpa eclipselink

大家好,我在我的 Java SE 项目中使用 JPA 的 eclipse 链接。我为我的数据库中的每个表使用“jpa Controller ”类(这是正确的方法)。我还为每个“jpa Controller 类”提供了一个 EntityManagerFactory,这样我就可以获得实体管理器。当程序启动时,它显示 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();
    }
}

这就是我布置 Controller 的方式。感谢您的帮助。

有时它会这样做。

[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 Controller 类。我已经将一个 entitymanagerfactory 放在一个 AbstractClass 中,但它仍在这样做。

最佳答案

每个事务/请求/ session 应该有一个 EntityManagerFactory 和一个 EntityManager。您还应该拥有一个包含所有类的持久性单元。

从技术上讲,创建具有相同持久化单元名称且没有参数的多个工厂应该共享相同的持久化单元、缓存/连接池,但如果您有不同的持久化单元,那么每个工厂都会有自己的缓存/连接池。

关于java - 持久性单元的多次登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4857317/

相关文章:

java - 为什么 hibernate 不删除我的空集合?

java - Scala 中的 "eval"

PHP缓存mysql还是完整的html?

无法找到 Java Developer Kit 可执行文件

mysql - 创建数据库 View ,其中每一行均取前一行的值

java - 在多线程 RMI 架构中使用 JPA

java - JPA 双向关系抛出 java.lang.StackOverflowError : null

java - Brixton Eureka/ConfigServer 与 Eureka/Config Angel 客户端的兼容性?

java - 将图像插入java代码编辑器

java - 防止 'PersistentObjectException'