gpt4 book ai didi

java - 如何创建线程安全的 EntityManagerFactory?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:06:35 24 4
gpt4 key购买 nike

我正在开发一个需要执行一些数据库操作的应用程序。

我为 EntityManagerFactory 创建了一个静态变量,并在应用程序调用的方法中对其进行了初始化

 if (emf == null) {
emf = Persistence.createEntityManagerFactory("example");
}

try {
em = emf.createEntityManager();
} catch (Exception ex) {
logger.error(ex.getMessage());
}

这是线程安全的吗?如果我在同步块(synchronized block)中创建 EntityManagerFactory,等待线程的数量会增加并导致应用程序崩溃。

我查看了文档以了解 Persistence.createEntityManagerFactory 是否是线程安全的,但没有成功。

请指导我找到正确的资源。

最佳答案

“解决”这个问题的一种简单方法是使用辅助类(如 HibernateUtil)并在静态初始化 block 中初始化 EntityManagerFactory。像这样:

public class JpaUtil { 
private static final EntityManagerFactory emf;

static {
try {
factory = Persistence.createEntityManagerFactory("MyPu");
} catch (Throwable ex) {
logger.error("Initial SessionFactory creation failed", ex);
throw new ExceptionInInitializerError(ex);
}
}

...

}

“问题”消失了。

关于java - 如何创建线程安全的 EntityManagerFactory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3711439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com