null

Используем Hibernate и JPA 2.0 в NetBeans

В прошлой статье цикла, посвященного ORM, мы рассмотрели основы разработки приложений с использованием JPA 2.0. В качестве Persistence Provider'а нами использовался EclipseLink, являющийся стандартной реализацией JPA 2.0 и доступный по умолчанию для создания проектов на основе Java Persistence API в NetBeans. В сегодняшней статье я покажу, как добавить в NetBeans возможность работы c JPA 2.0 и Hibernate. В качестве IDE был использован NetBeans 7.0 (All версия).

Создадим тестовое приложение TestApp. В приложении будет задействована база данных, поэтому необходимо также создать БД test_base (для простоты будем использовать DerbyDB) и добавить в проект библиотеки для работы с DerbyDB. Подробнее о создании приложения и настройке БД смотрите здесь.

Когда каркас приложения создан, подготовим Hibernate к использованию. Для этого нам нужен дистрибутив – я использовал Hibernate 3.6.3 (последнюю на данный момент версию можно получить на сайте Hibernate). Дистрибутив Hibernate имеет следующую структуру:

	vova@vova:~/projects/hibernate-distribution-3.6.3.Final$ ls
changelog.txt
documentation
hibernate3.jar
logo.gif
hibernate-testing.jar
lgpl.txt
lib
project

Нужные нам библиотеки будем хранить в папке hibernate-jpa:

	vova@vova:~/projects/hibernate-distribution-3.6.3.Final$ mkdir ~/projects/TestProject/hibernate-jpa

Наш тестовый проект располагается в директории ~/projects/TestProject/

Для работы с Hibernate (через JPA 2.0) нам понадобятся библиотеки, расположенные в следующих директориях дистрибутива (адреса заданы относительно корня дистрибутива):

	lib/required
lib/jpa

А также hibernate3.jar, который находится в корне.

Для удобства скопируем все необходимые библиотеки в одну директорию:

	vova@vova:~$ cp ~/projects/hibernate-distribution-3.6.3.Final/hibernate3.jar ~/projects/TestProject/hibernate-jpa/
vova@vova:~$ cp ~/projects/hibernate-distribution-3.6.3.Final/lib/required/* ~/projects/TestProject/hibernate-jpa/
vova@vova:~$ cp ~/projects/hibernate-distribution-3.6.3.Final/lib/jpa/* ~/projects/TestProject/hibernate-jpa/

В итоге, в папке hibernate-jpa у нас будут следующие библиотеки (в зависимости от используемой версии Hibernate данный список может измениться):

	vova@vova:~$ ls projects/TestProject/hibernate-jpa/
total 6112
antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
hibernate3.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
javassist-3.12.0.GA.jar
jta-1.1.jar
slf4j-api-1.6.1.jar

Возвратимся к ранее созданному проекту. Пора создать первую Entity нашего приложения: кликните на проекте правой кнопкой мыши → New → Entity Class... В появившемся диалоговом окне укажите название класса-сущности - TestEntity и пакет, где сущность будет располагаться (я использовал com.testapp.entity).

Перед нами появилось окно для настройки ORM-реализации. В нем для Database Connection выберите созданное соединение с БД test_base.

При клике на Persistence Library появляется список доступных библиотек. В нем есть только Hibernate, совместимый с JPA 1.0. Давайте добавим Hibernate, поддерживающий JPA 2.0.

В качестве Persistence Library выберите пункт New Persistence Library...

В появившемся окне выберите Add JAR/Folder...

Далее нужно указать путь к папке с необходимыми библиотеками Hibernate (в моем случае - ~/projects/TestProject/hibernate-jpa) и добавить все имеющиеся в этой директории jar:

Указываем Library Name, нажимаем OK:

Теперь в списке Persistence Library появилась возможность выбрать Hibernate (JPA 2.0):

Выбираем добавленную нами библиотеку, нажимаем Finish.

Таким образом в нашем приложении реализована поддержка Hibernate и JPA 2.0.

Теперь при создании нового приложения, чтобы использовать Hibernate в связке с JPA 2.0, достаточно выбрать соответствующий пункт меню при настройке Persistence Unit или подключить к проекту библиотеку jpa2.0-hibernate (во втором случае придется также задать конфигурационные файлы).