java - 系统数据库用户共享的 Hibernate Session 工厂

标签 java mysql hibernate sessionfactory

我想创建由所有系统数据库用户共享的 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/

相关文章:

java - 由于 hibernate 线程,JFrame 更新失败

php - laravel 根据表单中的多个字段创建一个带有查询的规则

mysql - 如何使用非root用户登录MySQL

c# - 如何将多个 SQL 查询作为事务进行?

java - AndroidBillingLibrary : Remote Service crashed on BillingController. 请求购买

java - 使用 Gremlin GraphFactory 连接到 AWS Neptune

Java如何读取stdin?

java - 查询从日期时间字段返回一天的记录

java - 如果还有其他 child ,则 Hibernate 删除 child 不起作用

java - Spring Hibernate @Transactional 说明