Создание метамодели для сущностного класса в JPA 2

Автоматическая генерация классов метамодели для сущностного класса в JPA 2

Используемые технологии
  • Hibernate 5.0.1.Final
  • JPA 2.1
  • IntelliJ IDEA 14
  • Maven 3.2.5

Кратко покажу как сгенерировать классы метамодели для уже созданных классов сущностей в JPA 2 и Hibernate.

1. Описание метамодели JPA

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

Теперь не придется каждый раз перезапускать приложение после того, как вы узнали об ошибке в вашем запросе.

В API-интерфейсе критериев JPA метамодель создается с именем сущностного класса и суффикса ‘_‘. Т.е. сущность — ClassNameEntity и метамодель — ClassNameEntity_ .

2. Добавление зависимости в maven

pom.xml:

Эта зависимость поможет включить генератор метамодели Hibernate.

3. Настройка Intellij Idea

Metamodel generate

Добавляем в Settings — Annotation Processors строчку org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor в поле Processor FQ Name. Остальные настройки оставил как есть.

4. Генерация классов метамодели

После сборки проекта в указанной в настройках папке появятся классы метамодели. Здесь приведен пример для статьи JPA — запрос с критерием. Использование API-интерфейса критериев JPA 2. Т.к. оставлял все настройки по умолчанию, то классы появились в target.. Просто перенес их в проект для наглядного описания в указанной статье. Затем отключил галочку Enable annotation processing, чтобы классы не генерировались каждый раз и не возникало ошибки дубликатов классов.

Пример сгенерированного класса ContactEntity_ :

Подробнее о различных способах генерации метамодели в статье от jboss.org.

Статья о генерации метамодели от jboss.org

jboss.org — JPA Static Metamodel Generator

 

Share Button
8
16211 Total Views 1 Views Today

Добавить комментарий