我想创建由所有系统数据库用户共享的 session 工厂。由于 session 工厂是一个很重的组件,因此每次用户登录应用程序时都创建它是不正确的。
我的情况是,我有一个由系统数据库用户登录的应用程序,即 Mysql 数据库用户,而不是由应用程序用户登录。所以我需要一个只能创建一次并可供所有系统数据库用户使用的 session 工厂。
可以这样做吗?
最佳答案
是的,这是可能的。您可以创建一个具有 SessionFactory
静态对象的类。假设此类有一个static
block ,以便在该类加载到 JVM 时仅执行一次。在该static
block 中,您必须初始化SessionFactory
,当您想使用sessionFactory
时,您可以调用sessionFactory对象的getter。
public final class SessionFactoryHelper {
private static SessionFactory sysDBUserSessionFactory;
static {
try {
// initialize the sysDBUserSessionFactory object.
} catch (Exception e) {
//exception handling
}
}
public static SessionFactory getsysDBUserSessionFactory() {
return sysDBUserSessionFactory;
}
}
每当您希望系统数据库用户使用 sessionFactory 时:
SessionFactory sessionFactory = SessionFactoryHelper.getsysDBUserSessionFactory();
关于java - 系统数据库用户共享的 Hibernate Session 工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28826269/