Метамодель для JPA

JPA определяет метамодель, которая может запрашивать информацию об отображениях ORM во время выполнения.

Метамодели можно использовать с Criteria API вместо использования строк для ссылки на атрибуты класса.

Что такое метамодель

Если вы используете JPA или Hibernate для написания критерияQuery.

Вы можете встретить следующее предложение

criteriaQuery.where(builder.greaterThan(root.get("dateM"), new DateTime().minusDays(100).toDate()));

Независимо от всех приведенных выше определений типов, смысл приведенного выше предложения заключается в том, чтобы создать время обновления поля dateM SQL-запроса больше, чем текущее время минус 100 дней.

Если вы используете метамодель, это можно записать так:

criteriaQuery.where(builder.greaterThan(root.get(MlsListing_.DATE_M), new DateTime().minusDays(100).toDate()));

Приведенное выше предложение запрашивает дату обновления в объекте MlsListing_ORM, что эквивалентно приведенному выше предложению.

MlsListing_.DATE_MЭто то, что мы называем Метамоделью, которая генерируется динамически.

И он использует подчеркнутое выражение объекта ORM.

Почему Метамодель

На самом деле нам не нужно использовать Metamodel, вы можете использовать dateM напрямую.

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

Поскольку вы используете строку String, компилятор Java не может найти ошибки компиляции.

Разве это не угнетает.

Если вы используете Metamodel, все места, которые необходимо изменить, вызовут ошибки компиляции.

Вот почему мы используем Метамодель

Метамодель генерируется во время компиляции

Метамодель не является частью вашего кода.

Это генерируется во время компиляции, вам не нужно вручную писать код.

Что вам нужно сделать, это для maven в файле pom.xml

добавить зависимости

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-jpamodelgen</artifactId>
            <version>5.6.3.Final</version>
        </dependency>

Добавьте параметры компиляции

<compilerArguments>
    <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
</compilerArguments>

 

Затем, когда вы запускаете Maven для компиляции, соответствующие файлы будут автоматически созданы в целевой папке.

файлы, созданные после компиляции

Скомпилированные файлы находятся в целевой папке.

Когда вы закончите конфигурацию pom.xml выше, у вас не возникнет проблем с компиляцией вашего проекта.

Оригинал: Метамодель для JPA — Java — OSSEZ

Guess you like

Origin blog.csdn.net/m0_75186659/article/details/128302994