Я знаю, что это немного поздно, но я сталкивался с этим, и в моем проекте я использовал org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean (в контейнере Spring, конечно). Мне очень нравится JPA, и я уверен, что это облегчит жизнь, но я хочу использовать свои доменные классы в проекте, который не использует Hibernate, JPA, Spring или что-то подобное. Мы решили, что было бы лучше оставить некоторые из наших классов доменов свободными от аннотаций Java Persistence, если это возможно.
Я знаю, что это простая вещь, которая, вероятно, очевидна для многих, но это заняло у меня некоторое время. Ниже мой пример заметки 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; }
}
В каталоге src/main/java/mypackage/domain/
(если вы используете Maven) вы должны поместить хороший, традиционный 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>
Если вы используете Hibernate 4.0.0.CR3, который должен быть в порядке, конфигурация Spring (я использую 3.0.6.RELEASE) может тогда выглядеть как типичная конфигурация JPA Hibernate:
<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 в унаследованном родственном проекте, я не вижу в этом такого недостатка.