Вы можете прекрасно использовать JPA в автономном клиентском приложении с классом main()
в качестве точки входа. Просто добавьте JPA JAR в buildpath / classpath и настройте persistence.xml
для использования типа транзакции RESOURCE_LOCAL
. Вы можете найти примеры запуска в EclipseLink Wiki - Запуск JPA Внешнего Контейнера . Вот выдержка из релевантности:
<persistence-unit name="LocalPersistenceUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
<property name="javax.persistence.jdbc.user" value="scott"/>
<property name="javax.persistence.jdbc.password" value="tiger"/>
</properties>
</persistence-unit>
Вы можете повторно использовать клиентский проект с JPA-моделями и возможными DAO в веб-проекте, добавив клиентский проект в качестве модуля веб-проекта. Например, в Eclipse вам просто нужно добавить клиентский проект в путь сборки веб-проекта с помощью Путь сборки Java> Проекты> Добавить и настроить Deployment Assembly , чтобы он завершился как JAR в /WEB-INF/lib
.
Наконец, в вашем веб-проекте вы можете иметь еще один persistence.xml
, который в основном указывает на JAR-файл клиентского проекта и переопределяет тип транзакции.
<persistence-unit name="WebPersistenceUnit" transaction-type="JTA">
<jta-data-source>jdbc/DataSourceName</jta-data-source>
<jar-file>lib/JavaProject.jar</jar-file>
</persistence-unit>
Таким образом, вам не нужно повторять классы моделей в persistence.xml
.