作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发一个需要执行一些数据库操作的应用程序。
我为 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/
我是一名优秀的程序员,十分优秀!