что, черт возьми, такое конфигурация JPA?
-
06-07-2019 - |
Вопрос
Я схожу с ума, пытаясь получить простой Энверс пример для работы.я застрял на org.hibernate.tool.ant.EnversHibernateToolTask
— похоже, я наконец-то получил все необходимые jar-файлы, но теперь получаю сообщение об ошибке
[hibernatetool] Persistence unit not found: 'ConsolePU'.
BUILD FAILED
C:\deka\proj\java\test-database\build.xml:61: Persistence unit not found: 'ConsolePU'.
Насколько я могу судить, единицы персистентности связаны с JPA. persistence.xml
файлы.Но я не использую файл persistence.xml;Я использую hibernate.cfg.xml, но в примере с envers есть <jpaconfiguration>
в задаче муравья:
<hibernatetool destdir=".">
<classpath>
<fileset dir="src/">
<include name="**/*.hbm.xml"/>
</fileset>
<path location="${buildDir}" />
</classpath>
<jpaconfiguration persistenceunit="ConsolePU" />
<hbm2ddl
drop="false"
create="true"
export="false"
outputfilename="versioning-ddl.sql"
delimiter=";"
format="true"/>
</hibernatetool>
есть ли что-нибудь, чем я могу его заменить, чтобы заставить его работать с файлом hibernate.cfg.xml?Кажется, нет НУЛЕВОЙ документации о том, как заставить все это работать правильно.
редактировать: Хорошо, основная проблема заключалась в том, что я не понимал параметры hibernatetool и то, что подходит для моего приложения.я нашел Документация по спящему муравью, к счастью.Спасибо.Теперь у меня новая проблема:Я использую аннотации, но я также настроил hibernate.cfg.xml для настроек свойств.А hibernatetool
задача позволяет мне запускать только <configuration />
или <annotationconfiguration />
не то и другое, и даже <configuration />
не будет работать, поскольку у меня уже есть аннотации, которые что-то делают.Как перенести настройки свойств из файла hibernate.cfg.xml в мои аннотации?
редактировать: Да, я не осознавал, что ты просто делаешь:
<annotationconfiguration configurationfile="...filename..." />
Решение
Замените <jpaconfiguration />
на тег <configuration />
, как подробно описано в документации по Hibernate Tools:
<configuration
configurationfile="hibernate.cfg.xml"
propertyfile="hibernate.properties"
entityresolver="EntityResolver classname"
namingstrategy="NamingStrategy classname">
Другие советы
Просто чтобы дать вам перспективу высокого уровня.JPA — это стандартный API персистентности, предоставляемый SUN.
Вы можете использовать любую структуру персистентности, такую как Hibernate, TopLink, JDO и т. д., в качестве поставщика персистентности с JPA.
Так что просто чтобы прояснить ситуацию
Ваш код -----> JPA -----> Поставщик постоянства (Hibernate).
Хорошей практикой будет использование JPA, поскольку это стандартная библиотека.
Итак, какая информация о вашем поставщике персистентности должна быть известна только JPA, а не XML-коду, специфичному для вашего кода.
Вот как будет выглядеть ваш файл persistence.xml
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="QuarkFrameworkPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
</persistence-unit>
И контекст вашего приложения будет выглядеть так (зависит от JPA, без упоминания о Hibernate)
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="com.mysql.jdbc.Driver" p:url="${db.url}" />
<!-- ADD PERSISTENCE SUPPORT HERE (jpa,etc) -->
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="QuarkFrameworkPU" />
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true" />
</bean>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
<property name="dataSource" ref="dataSource" />
</bean>
Вам нужно начать с самого начала: учебник Sun по JPA . р>
Это также может помочь.
Вам нужно создать файл persistence.xml и поместить его в каталог META-INF для вашего проекта.
Hibernate - это одна конкретная реализация для JPA, но есть и другие (например, JDO).
Вам нужна конфигурация аннотации, а не jpaconfiguration.