これは少し遅いことは知っていますが、これに遭遇し、私のプロジェクトではorg.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean(もちろん、Springコンテナー内)を使用しています。私はJPAが本当に好きで、それが人生を楽にしてくれると確信していますが、Hibernate、JPA、Springなどを使用しないプロジェクトでドメインクラスを使用したいと思います。可能であれば、一部のドメインクラスにJavaPersistenceアノテーションを付けない方がよいと判断しました。
これはおそらく多くの人にとって明らかな単純なことですが、しばらく時間がかかりました。以下は、注釈がないことに注意したPOJOの例です。
package mypackage.domain;
public class Profile {
private Long id;
private String friendlyName;
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public String getFriendlyName() { return friendlyName; }
public void setFriendlyName(String friendlyName)
{ this.friendlyName = friendlyName; }
}
ディレクトリ(Mavenを使用しているsrc/main/java/mypackage/domain/
場合)に、従来のXMLマッピングファイル(Profile.hbm.xml)を配置する必要があります。
<hibernate-mapping package="mypackage.domain" default-access="field">
<class name="Profile" table="Profile">
<id name="id" column="ID">
<generator class="native" />
</id>
<property name="friendlyName" column="FriendlyName" />
</class>
</hibernate-mapping>
問題のないHibernate4.0.0.CR3を使用している場合、Spring構成(私は3.0.6.RELEASEを使用しています)は、典型的なJPAHibernate構成のようになります。
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="database" value="SQL_SERVER" />
<property name="showSql" value="true" />
</bean>
</property>
</bean>
META-INF/persistence.xml
はかなり基本的なものであり、完全を期すために次のようになります。
<persistence version="1.0">
<persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>mypackage.domain.Profile</class>
</persistence-unit>
</persistence>
もちろん、私はJPAを使用していますが、マッピング構成はHibernate固有であるため、このプロジェクトではHibernateに関連付けました。これは、レガシー姉妹プロジェクトで純粋なJDBCを使用しているため、そのような欠点とは見なされません。