Роль Service Registry для создания фабрики сессий?

Хотя я использую следующий рекомендуемый способ в 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 используется Standard Service Registry Builder? Каково реальное использование этого класса и почему он используется для создания Session Factory? О каких сервисах говорят в Реестре сервисов?

2 ответа

Решение

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

Другие вопросы по тегам