JPA構成とは一体何ですか?
-
06-07-2019 - |
質問
単純な Envers を取得しようとしています。動作する例。 org.hibernate.tool.ant.EnversHibernateToolTask
<!>#8212にこだわっています。必要なすべての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 <!>#8212;を使用しています。ただし、その例のantタスクには<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 antドキュメント、幸いなことに。ありがとう。現在、新しい問題が発生しています。注釈を使用していますが、プロパティ設定用にhibernate.cfg.xmlも設定しています。 hibernatetool
タスクでは<configuration />
または<annotationconfiguration />
の両方を実行することはできません。また、注釈を既に実行しているため、<=>でも動作しません。プロパティ設定をhibernate.cfg.xmlファイルから注釈に移行するにはどうすればよいですか?
編集:ただ、あなたがそうすることを知らなかった:
<annotationconfiguration configurationfile="...filename..." />
解決
<jpaconfiguration />
をに置き換えます<configuration />
タグ。HibernateToolsのドキュメントで詳しく説明されています:
<configuration
configurationfile="hibernate.cfg.xml"
propertyfile="hibernate.properties"
entityresolver="EntityResolver classname"
namingstrategy="NamingStrategy classname">
他のヒント
高レベルの前置きを提供するだけです。
JPAは、SUNが提供する標準永続性APIです。
Hibernate、TopLink、JDOなどの永続フレームワークをJPAの永続プロバイダーとして使用できます。
だから物事を明確にするために
コード----- <!> gt; JPA ----- <!> gt; Persistence Provider(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の具体的な実装の1つですが、他にもあります(JDOなど)。
jpaconfigurationではなく、annotationconfigurationが必要です。