服务注册中心的角色,用于构建会话工厂



当我在Hibernate 4.3中使用以下推荐的方式来创建会话工厂时,

Configuration configuration = new Configuration().configure(CONFIGURATION_LOCATION);  
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);

我试图通过阅读Hibernate文档来找到上面的代码是如何工作的,Configuration对象用于指定我们在hibernate.cfg.xml中指定的配置属性。会话工厂对于应用程序来说是单一的(在应用程序必须连接一个数据库的情况下),用于创建会话。

但是我不能理解这个服务注册表在创建会话工厂中做什么,为什么从hibernate 4.3开始,使用标准服务注册表构建器?这个类的实际用途是什么?为什么用它来创建会话工厂?

服务注册表中讨论哪些服务?

ServiceRegistry允许Hibernate初始化服务,例如:

  • JTA事务协调器
  • 缓存服务
  • JMX提供者

ServiceRegistry的作用是提供一种灵活的方式来引导Hibernate服务。一些应用程序使用编程方式创建SessionFactory,而其他环境则通过外部机制(如OSGI)引导服务。

服务和注册中心是从4.0开始的正式概念。

服务以可插拔的方式提供各种类型的功能。例如,Hibernate需要能够访问到数据库的JDBC连接。它获取和释放这些连接的方式是通过ConnectionProvider服务。 在最基本的情况下,ServiceRegistry托管和管理服务。服务有一个作用域,它可能依赖于其他服务。它们需要被生成(选择使用一种实现而不是另一种实现)。ServiceRegistry满足了所有这些需求。在一个简洁的定义中,ServiceRegistry充当一个控制反转(IoC)容器,管理服务、它们的生命周期和依赖关系。

以上要点已从下面的链接中引用,请访问更多细节,它将对进一步理清您的概念非常有帮助

https://docs.jboss.org/hibernate/orm/5.0/topical/html/registries/ServiceRegistries.html

最新更新