Архитектура Hibernate

Gavin King, Christian Bauer, Max Rydahl Andersen, Emmanuel Bernard, and Steve Ebersole and thanks to James Cobb (Graphic Design) and Cheyenne Weaver (Graphic Design)

Перевод с английского: Черныш Игорь Игоревич


Источник оригинала: http://www.hibernate.org/docs.html

2.1. Краткий обзор

Диаграмма ниже обеспечивает высокоуровневое представление Hibernate архитектуры:

Мы не имеем контекста в этом документе, чтобы обеспечить более детальное представление всей доступной выполняемой архитектуры; Hibernate является гибким и поддерживающий несколько различных подходов. Однако, мы будем показывают две крайности: "минимальная" архитектура и "всесторонняя" архитектура.

Следующая диаграмма иллюстрирует, как Hibernate использует данные базы данных и конфигурирует их для обеспечения постоянных сервисов, и постоянных объектов для приложений.

"Минимальная" архитектура имеет приложение, которое обеспечивает собственное JBDC подключения и управляют собственными транзакциями. Этот подход использует минимальное подмножество Hibernate APIs:

Архитектура "Всесторонний" абстрагирует приложение далеко от основного JDBC/JTA API и позволяет Hibernate управлять деталями.

Здесь есть некоторые определения объектов, изображаемых в диаграмме:

SessionFactory (org.hibernate.SessionFactory)

Threadsafe, неизменный кэш компилированных картографий для единственной базы данных. Фабрика для Сессии и клиента ConnectionProvider, SessionFactory может содержать(во-вторых-уровень) кэш данных это повторно используется между транзакциями в уровне процесса, или кластера.

Session (org.hibernate.Session)

Однопоточный, недолгий объект, представляющий взаимодействие между приложением и постоянной памятью. Сессия держит обязательный первоуровневый кэш постоянных объектов, которые используются для навигации графических объектов или находя объекты по идентификатору.

Постоянные объекты и коллекции

Недолгие, однопоточные объекты, содержащие постоянную установленную и деловую функцию. Эти может быть обычный JavaBeans/POJOs. Они связываются с одной Сессией. После того как сессия будет закрыта, они будут отдельными и свободными для использоватния в любом прикладном уровне.

Быстротечные и отдельные объекты и колекции

Образцы постоянных классов, которые в настоящий момент не связываются с Сессией. Они могут были подтверждены приложением, или они, возможно, были подтверждены закрытой Сессией.

Транзакция (org.hibernate.Transaction)

(Необязательный) Однопоточный, временный объект, используемый приложением, чтобы конкретизировать атомные единицы работы. Это абстрагирует приложение от основного JDBC, JTA или CORBA транзакциями. Сессия может охватывать несколько Транзакций в некоторых случаях.

ConnectionProvider (org.hibernate.connection.ConnectionProvider)

(Необязательный) Фабрика для, и пул, подключения JDBC. Это абстрагирует приложение лежание в основе Datasource или DriverManager. Это может быть расширено и/или реализовано разработчиком.

TransactionFactory (org.hibernate.TransactionFactory)

(Необязательный) Фабрика для Операционных образцов. Это не подвергнуто приложению, но это может будьте расширенные и/или осуществляющиеся разработчиком.

Интерфейсы расширения

Hibernate предлагает диапазон расширения интерфейса с помощью интерфейса, вы можете осуществлять для настройки поведение вашего уровня постоянства. Посмотрите документацию API для более конкретной информации.

Получив "минимальную" архитектуру, приложение обходит Transaction/TransactionFactory и/или ConnectionProvider API, чтобы связаться с JTA или JDBC непосредственно.

2.2. Образец заявляет

Образец постоянного класса может быть в одном из трех различных состояний. Эти состояния определены относительно контекст постоянства. Объект Hibernate Сессии - контекст постоянства. Три различных состояния указаны ниже:

быстротечный

Образец не связывается с любым контекстом постоянства. Это не имеет никакого постоянного тождества или первоначального ключевого значения.

постоянный

Образец в настоящий момент связывается с контекстом постоянства. Это имеет постоянное тождество (первоначальное ключевое значение) и может иметь соответственный ряд в базе данных. Для подробности контекст постоянства, Hibernate гарантиhetn, что постоянное тождество эквивалентно к Java тождеству относительно расположение в оперативной памяти объекта.

отдельно

Образец был однажды связан с контекстом постоянства, но этот контекст был закрыт, или образец был упорядочен к другому процессу. Это имеет постоянное тождество и может иметь соответственный ряд в базе данных. Для отдельных образцов, Hibernate не гарантирует взаимосвязь между постоянным тождеством и Java тождеством.

2.3. Интеграция JMX

JMX - стандарт J2EE для управления Java компонентами. Hibernate может управляется через JMX обслуживание стандарта. Реализация MBean обеспечена в дистрибутиве:

org.hibernate.jmx.HibernateService.

Для примера, как развернуть Hibernate как обслуживание JMX на JBoss Сервере Приложения, посмотрите JBoss Руководство Пользователя. JBoss, также это обеспечивает, если вы развертываете использование JMX:

2.4. Поддержка JCA

Hibernate может также быть сконфигурирован как соединитель JCA. Посмотрите поле подробную информация на вэб узле.