Ответ
Центральным и тяжеловесным объектом, отвечающим за конфигурацию и создание сессий, является SessionFactory.
Роль SessionFactory:
- Фабрика сессий: Создает легковесные объекты
Sessionдля работы с БД. - Кэширование: Хранит вторичный кэш (если включен), метаданные маппинга (ORM-модель) и оптимизированные SQL-запросы.
- Конфигурация: Содержит настройки подключения из
hibernate.cfg.xmlилиpersistence.xml.
Пример создания (устаревший, но наглядный API):
Configuration configuration = new Configuration().configure();
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties())
.build();
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
// Использование
Session session = sessionFactory.openSession();
// ... работа с сущностями через session
session.close();
В контексте JPA: В приложениях, использующих стандарт JPA, вместо SessionFactory используется EntityManagerFactory, который является оберткой над SessionFactory и предоставляет стандартизированный интерфейс. Hibernate реализует оба варианта.