Читаем Изучаем Java EE 7 полностью

·············xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance"

·············xsi: schemaLocation="http://xmlns.jcp.org/xml/ns/persistence 

·············http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"

·············version="2.1">

··

····org.eclipse.persistence.jpa.PersistenceProvider

····org.agoncal.book.javaee7.chapter04.Book

····

······

value="drop-and-create"/>

······

······

················value="org.apache.derby.jdbc.ClientDriver"/>

······

················value="jdbc: derby://localhost:1527/chapter04DB;create=true"/>

······

······

····

··

Единица сохраняемости chapter04PU определяет JDBC-подключение для базы данных Derby chapter04DB, которая функционирует на локальном хосте с помощью порта 1527. К ней подключается пользователь (APP) с применением пароля (APP) по заданному URL-адресу. Тег дает указание поставщику постоянства управлять классом Book (существуют и другие теги для неявного или явного обозначения классов с управляемым постоянством, например , или ). Без единицы сохраняемости сущностями можно манипулировать как POJO, однако их постоянство при этом обеспечиваться не будет.

<p>Жизненный цикл сущности и обратные вызовы</p>

Сущности представляют собой всего лишь POJO. Когда EntityManager управляет POJO, у них имеется идентификатор постоянства (ключ, который уникально идентифицирует экземпляр и является эквивалентом первичного ключа), а база данных синхронизирует их состояние. Когда управление ими не осуществляется (то есть они обособлены от EntityManager), их можно использовать как любой другой Java-класс. Это означает, что у сущностей имеется жизненный цикл (рис. 4.3). Когда вы создадите экземпляр сущности Book с помощью оператора new, объект будет располагаться в памяти, а JPA ничего не будет знать о нем (этот объект даже может перестать существовать в результате сборки мусора) Когда им начнет управлять EntityManager, таблица BOOK отобразит и синхронизирует его состояние. Вызов метода EntityManager.remove() приведет к удалению соответствующей информации из базы данных, однако Java-объект продолжит находиться в памяти, пока не исчезнет в результате сборки мусора.

Рис. 4.3. Жизненный цикл сущности

Операции с сущностями подпадают под четыре категории: обеспечение постоянства, обновление, удаление и загрузка — аналогичные категориям операций с базами данных, к которым относятся соответственно вставка, обновление, удаление и выборка. Для каждой операции имеют место события с приставками pre и post (за исключением загрузки, для которой имеет место только событие с приставкой post). Эти события могут быть перехвачены EntityManager для вызова бизнес-метода. Как вы увидите в главе 6, в вашем распоряжении будут аннотации @PrePersist, @PostPersist и т. д. JPA позволяет вам привязывать бизнес-логику к определенной сущности, когда имеют место эти события. Упомянутые аннотации могут быть применены к методам сущностей (также известным как методы обратного вызова) или внешним классам (также известным как слушатели). Вы можете представлять себе методы обратного вызова и слушатели как аналогичные триггеры в реляционной базе данных.

<p>Интеграция с Bean Validation</p>

Технология Bean Validation, которая была разъяснена в предыдущей главе, связана с Java EE несколькими способами. Один из них выражается в ее интеграции с JPA и жизненным циклом сущностей. Сущности могут включать ограничения Bean Validation и автоматически подвергаться валидации. Фактически автоматическая валидация обеспечивается благодаря тому, что JPA возлагает ее проведение на реализацию Bean Validation при наступлении событий жизненного цикла сущности pre-persist, pre-update и pre-remove. Разумеется, при необходимости валидация по-прежнему может проводиться вручную вызовом метода validate класса Validator в отношении сущности.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных