ServiceRegistry在创建SessionFactory时有何用处

时间:2014-02-03 05:33:40

标签: java hibernate sessionfactory

我正在学习Java中的Hibernate。 由于要创建Session,我们必须使用SessionFactory.openSession(),并且为了创建SessionFactory,我们使用sessionFactory = config.buildSessionFactory(serviceRegistry);

hibernate中ServiceRegistry的用途是什么?

我创建SessionFactory的代码:

Configuration config = new Configuration();
        config.addAnnotatedClass(user.class);
        config.addAnnotatedClass(emp.class);
        config.configure();

// Didn't understand the code below
            Properties configProperties = config.getProperties();
            ServiceRegistryBuilder serviceRegisteryBuilder = new ServiceRegistryBuilder();
            ServiceRegistry serviceRegistry = serviceRegisteryBuilder.applySettings(configProperties).buildServiceRegistry();
            SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry);

3 个答案:

答案 0 :(得分:1)

请参阅Hibernate文档(第7章):http://docs.jboss.org/hibernate/core/4.0/devguide/en-US/html/ch07.html

服务:服务是为Hibernate提供各种类型功能的可插拔实现的类。具体而言,它们是某些服务合同接口的实现

ServiceRegistry:除服务本身外,中央服务API是org.hibernate.service.ServiceRegistry接口。服务注册表的主要目的是保存,管理和提供对服务的访问。

答案 1 :(得分:0)

最基本的ServiceRegistry托管和管理服务。它的契约由org.hibernate.service.ServiceRegistry接口定义。 目前,Hibernate使用3种不同的ServiceRegistry实现形成层次结构。

  • BootstrapServiceRegistry
  • StandardServiceRegistry
  • SessionFactoryServiceRegistry org.hibernate.service.spi.SessionFactoryServiceRegistry是第三个标准的Hibernate ServiceRegistry。通常,其父注册表是StandardServiceRegistry。 SessionFactoryServiceRegistry旨在保存需要访问SessionFactory的服务。目前这只是3项服务。

<强> EventListenerRegistry org.hibernate.event.service.spi.EventListenerRegistry是SessionFactoryServiceRegistry中管理的大型服务。这是管理和公开所有Hibernate事件监听器的服务。 Integrators的一个主要用例是改变监听器注册表。

如果要进行自定义侦听器注册,请务必了解org.hibernate.event.service.spi.DuplicationStrategy及其对注册的影响。基本的想法是告诉Hibernate:

是什么让听众重复

如何处理重复注册(错误,第一次获胜,最后一次获胜)

<强> StatisticsImplementor

org.hibernate.stat.spi.StatisticsImplementor是org.hibernate.stat.Statistics API的SPI部分。收集器部分,如果你愿意的话。

答案 2 :(得分:0)

请参阅: http://docs.jboss.org/hibernate/core/4.0/devguide/en-US/html/ch07.html

除服务本身外,中央服务API是org.hibernate.service.ServiceRegistry接口。服务注册中心的主要目的是持有,管理和提供对服务的访问。

服务注册表是分层的。一个注册表中的服务可以依赖并利用同一注册表以及任何父注册表中的服务。

使用org.hibernate.service.ServiceRegistryBuilder构建org.hibernate.service.ServiceRegistry实例。