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

············query = "SELECT b FROM Book b WHERE b.title ='H2G2'")

public class Book {

··@Id @GeneratedValue

··private Long id;

··private String title;

··private Float price;

··private String description;

··private String isbn;

··private Integer nbOfPage;

··private Boolean illustrations;

// Конструкторы, геттеры, сеттеры

}

EntityManager можно получить в стандартном Java-классе с использованием фабрики. В листинге 4.4 показан такой класс, который создает сущность Book, обеспечивает ее постоянство в таблице и выполняет именованный запрос. Соответствующие действия он предпринимает с этапа 1 по 5.

1. Создает экземпляр сущности Book. Сущности являются аннотированными POJO, управляемыми поставщиком постоянства. С точки зрения Java экземпляр класса, как и любой POJO, необходимо создавать с помощью ключевого слова new. Важно подчеркнуть, что до этой точки в коде поставщик постоянства не осведомлен об объекте Book.

2. Получает EntityManager и транзакцию. Это важная часть кода, поскольку EntityManager необходим для манипулирования сущностями. Прежде всего создается EntityManagerFactory для единицы сохраняемости chapter04PU. После этого EntityManagerFactory задействуется для получения EntityManager (переменная em), используется повсюду в коде для получения транзакции (переменная tx) и обеспечения постоянства и извлечения Book.

3. Обеспечивает постоянство Book в базе данных. Код начинает транзакцию (tx.begin()) и использует метод EntityManager.persist() для вставки экземпляра Book. После фиксации транзакции (tx.commit()) информация сбрасывается в базу данных.

4. Выполняет именованный запрос. Опять-таки EntityManager используется для извлечения Book посредством именованного запроса findBookH2G2.

5. Закрывает EntityManager и EntityManagerFactory.


Листинг 4.4. Класс Main, который обеспечивает постоянство и извлекает сущность Book

public class Main {

··public static void main(String[] args) {

····// 1. Создает экземпляр Book

····Book book = new Book("H2G2", "Автостопом по Галактике", 12.5F, 

"1-84023-742-2", 354, false);

····// 2. Получает EntityManager и транзакцию

····EntityManagerFactory emf = 

Persistence.createEntityManagerFactory("chapter04PU");

····EntityManager em = emf.createEntityManager();

····// 3. Обеспечивает постоянство Book в базе данных

····EntityTransaction tx = em.getTransaction();

····tx.begin();

····em.persist(book);

····tx.commit();

····// 4. Выполняет именованный запрос

····book = em.createNamedQuery("findBookH2G2", Book.class). getSingleResult();

····// 5. Закрывает EntityManager и EntityManagerFactory

····em.close();

····emf.close();

··}

}

Обратите внимание на отсутствие SQL-запросов и JDBC-вызовов в листинге 4.4. Как показано на рис. 4.2, класс Main взаимодействует с основной базой данных с помощью интерфейса EntityManager, который обеспечивает набор стандартных методов, позволяющих вам осуществлять операции с сущностью Book. EntityManager «за кадром» полагается на поставщика постоянства для взаимодействия с базами данных. При вызове метода EntityManager поставщик постоянства генерирует и выполняет SQL-оператор с помощью соответствующего JDBC-драйвера.

Единица сохраняемости

Какой JDBC-драйвер вам следует использовать? Как вам нужно подключаться к базе данных? Каково имя базы данных? Эта информация отсутствует в приводившемся ранее коде. Когда класс Main (см. листинг 4.4) создает EntityManagerFactory, он передает имя единицы сохраняемости в качестве параметра; в данном случае она имеет имя chapter04PU. Единица сохраняемости позволяет EntityManager узнать тип базы данных для использования и параметры подключения, определенные в файле persistence.xml, который показан в листинге 4.5 и должен быть доступен по пути к соответствующему классу.


Листинг 4.5. Файл persistence.xml, определяющий единицу сохраняемости

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

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

C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Нил Форд , Билл де Ора , Майкл Хайгард

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT