Hibernate Session工厂由系统数据库用户共享

时间:2015-03-03 07:27:59

标签: java mysql hibernate sessionfactory

我想创建由所有系统数据库用户共享的会话工厂。由于会话工厂是重组件,因此每次用户登录应用程序时都无法创建它。

我的方案是,我有一个由系统数据库用户登录的应用程序,即Mysql数据库用户而不是应用程序用户。所以我需要一个会话工厂,只能创建一次并由所有系统数据库用户使用。

有可能吗?

1 个答案:

答案 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();