我想创建由所有系统数据库用户共享的会话工厂。由于会话工厂是重组件,因此每次用户登录应用程序时都无法创建它。
我的方案是,我有一个由系统数据库用户登录的应用程序,即Mysql数据库用户而不是应用程序用户。所以我需要一个会话工厂,只能创建一次并由所有系统数据库用户使用。
有可能吗?
答案 0 :(得分:1)
是的,有可能。您可以创建一个具有SessionFactory
静态对象的类。假设此类具有static
块,以便在将类加载到JVM时它只执行一次。在static
块中,您必须初始化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();