Hibernate SessionFactory 与 Service Registry

标签 hibernate upgrade sessionfactory

在 Hibernate 4 之前

session 连接的实现方式只有SessionFactory。

示例:

Configuration cfg=new Configuration();
Configuration cfg=cfg.configure(“mysql.cfg.xml”);
SessionFactory sf=cfg1.buildSessionFactory();

hibernate 4.0,4.1,4.2

它随着ServiceRegistry的概念而变化,实现方式是ServiceRegistry & SessionFactory。

示例:
 Configuration configuration = new Configuration();
 configuration.configure();

 serviceRegistry = new ServiceRegistryBuilder().applySettings(
            configuration.getProperties()).build();
 sessionFactory = configuration.buildSessionFactory(serviceRegistry);
 return sessionFactory;

hibernate 4.3

ServiceRegistryBuilder() 也被弃用并替换为 StandardServiceRegistryBuilder()。

示例:
serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
                configuration.getProperties()).build();

我的问题是:
  • b/w SessionFactory 和 ServiceRegistry 有什么区别?
  • 为什么需要 ServiceRegistry 的概念?
  • 与 SessionFactory 相比,引入 ServiceRegistry 的优势是什么?
  • 黑白 ServiceRegistryBuilder() 和 StandardServiceRegistryBuilder() 有什么区别?
  • 最佳答案

    您可以通过两种方式访问​​ SessionFactory 对象
    第一的:

    StandardServiceRegistry ssr = new StandardServiceRegistryBuilder()
    .configure("hibernate.cfg.xml").build();
    Metadata meta = new MetadataSources(ssr).getMetadataBuilder().build();
    SessionFactory factory = meta.getSessionFactoryBuilder().build();
    
    第二:
    Configuration cfg = new Configuration().configure();
    SessionFactory factory = cfg.buildSessionFactory();
    
    它们都使用 StandardServiceRegistry,但第二个更短,并在 configure() 方法中使用 StandardServiceRegistry 而您在代码中看不到它

    关于Hibernate SessionFactory 与 Service Registry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23904695/

    相关文章:

    java - boolean 逻辑可以应用于 Java @Annotations 吗?

    java - 如何在使用 JPA 持久化的同时将 PrimaryKey 的值(使用序列生成)分配给另一个变量?

    mysql - 我应该为 Spring 3.1.0、Hibernate 4.0.1.Final 和 MySQL 5.1 使用什么合并数据源?

    c# - 当我更改设置的漫游属性时,如何保留用户设置的值?

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

    java - Hibernate SQLQuery - 按名称获取对象

    java - hibernate是否默认使用PreparedStatement

    特定状态的 hibernate 条件顺序

    debian - 升级后从 systemctl 中删除 postgresql 服务

    java - 玩!框架升级复杂性