Роль 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