Изучаем Java EE 7 - [54]
3. Обеспечивает постоянство Book в базе данных. Код начинает транзакцию (tx.begin()) и использует метод EntityManager.persist() для вставки экземпляра Book. После фиксации транзакции (tx.commit()) информация сбрасывается в базу данных.
4. Выполняет именованный запрос. Опять-таки EntityManager используется для извлечения Book посредством именованного запроса findBookH2G2.
5. Закрывает EntityManager и EntityManagerFactory.
>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 и должен быть доступен по пути к соответствующему классу.
>
>
>·············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">
>··
>····
>····
>····
>······
>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-адресу. Тег
Жизненный цикл сущности и обратные вызовы
Сущности представляют собой всего лишь POJO. Когда EntityManager управляет POJO, у них имеется идентификатор постоянства (ключ, который уникально идентифицирует экземпляр и является эквивалентом первичного ключа), а база данных синхронизирует их состояние. Когда управление ими не осуществляется (то есть они обособлены от EntityManager), их можно использовать как любой другой Java-класс. Это означает, что у сущностей имеется жизненный цикл (рис. 4.3). Когда вы создадите экземпляр сущности Book с помощью оператора new, объект будет располагаться в памяти, а JPA ничего не будет знать о нем (этот объект даже может перестать существовать в результате сборки мусора) Когда им начнет управлять EntityManager, таблица BOOK отобразит и синхронизирует его состояние. Вызов метода EntityManager.remove() приведет к удалению соответствующей информации из базы данных, однако Java-объект продолжит находиться в памяти, пока не исчезнет в результате сборки мусора.
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.