【发布时间】:2013-09-16 05:29:14
【问题描述】:
我目前正在重新学习 Hibernate,我已经有五六年没用过了,我正在尝试回想我们过去在旧工作场所使用它的方式(Hibernate in Action 是正在订购...)
我目前没有在我的应用程序中使用 spring,我想知道的一件事是如何最好地在我的应用程序中检索 SessionFactory 以在我的持久性助手之间共享它 - 我似乎记得你通常只想要使用一个。在我当前的代码库中,我选择在我所有持久性“帮助者”共有的类中这样做:
public abstract class AbstractHelper {
private static final String CONFIG = "configuration.xml";
private static SessionFactory sessionFactory = null;
/**
* @return SessionFactory the Hibernate SessionFactory.
*/
public static SessionFactory getSessionFactory() {
if (sessionFactory == null) {
Configuration configuration = new Configuration();
configuration.configure(CONFIG);
ServiceRegistryBuilder serviceRegistryBuilder =
new ServiceRegistryBuilder().applySettings(configuration.getProperties());
sessionFactory = configuration.buildSessionFactory(
serviceRegistryBuilder.buildServiceRegistry());
}
return sessionFactory;
}
}
这对人们来说是否有意义,或者出于性能等原因,我应该以不同的方式解决这个问题吗?
【问题讨论】:
-
对我来说这似乎很好(因为这是我们过去常常这样做的方式)。我唯一建议的是关心线程。我会让正在构建 SessionFactory 的块同步。
-
确切地说是整个
if块(包括空检查)。
标签: java hibernate sessionfactory