Service Registry在构建会话工厂中的作用?

时间:2015-08-22 04:24:13

标签: java hibernate orm configuration sessionfactory

虽然我在Hibernate 4.3中使用以下推荐的方式来创建Session Factory,

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,使用标准服务注册表生成器?这个类的实际用途是什么以及它用于创建Session Factory的原因是什么? Service Registry正在讨论哪些服务?

2 个答案:

答案 0 :(得分:0)

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

  • JTA交易协调员
  • 缓存服务
  • Jmx提供商

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

答案 1 :(得分:0)

服务和注册管理机构是从4.0开始的新形式概念。

服务以可插拔的方式提供各种类型的功能。例如,Hibernate需要能够访问数据库的JDBC连接。它获取和释放这些Connections的方式是通过ConnectionProvider服务。

最基本的ServiceRegistry托管和管理服务。服务有一个范围,它可能取决于其他服务。并且需要生成它们(选择使用一种实现而不是另一种实现)。 ServiceRegistry满足所有这些需求。在一个简洁的定义中,ServiceRegistry充当控制反转(IoC)容器,管理服务,它们的生命周期和依赖关系。

以上几点已经从以下链接中引用,请访问它以获取更多详细信息,这将有助于进一步清除您的概念

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