如何配置&打包一个简单的Java应用程序以使用JPA

时间:2009-12-12 02:46:12

标签: java jpa persistence weblogic-10.x

我正在尝试学习JPA,我想创建一个简单的Java命令行应用程序,它将使用JPA来查询和更新数据库表。我绘制了执行此操作所需的简单代码。但我不知道如何配置目录结构,在哪里放置persistence.xml文件,打包等等。这只是一个快速而肮脏的学习练习,所以我希望尽可能简单。有人可以拼出这些步骤吗?

我正在使用Weblogic 10.3。

2 个答案:

答案 0 :(得分:1)

persistence.xml位于META-INF目录中,该目录与持久性类处于同一级别。 Here's an example一些有效且无效的配置。在我编写的非Java EE应用程序中,我使用WEB-INF/classes/META-INF/中的persistence.xml构建了JAR,因为我的JPA类位于WEB-INF/classes/中。

答案 1 :(得分:1)

不确定WebLogic与Java命令行应用程序有什么关系:)

无论如何,所有您要查找的详细信息位于Persistence UnitsThe Java EE 5 Tutorial部分,我在下面引用:

  

持久性单位

     

持久性单元定义一组   由...管理的所有实体类   EntityManager个实例   应用。这套实体   classes表示包含的数据   在单个数据存储中。

     

持久性单位由。定义   persistence.xml配置文件。   JAR文件或目录   META-INF目录包含   persistence.xml称为根   持久性单位。的范围   持久性单位由   持久性单位的根。

     

每个持久性单元必须是   使用唯一的名称标识   持久性单位的范围。

     

持久单位可以打包为   WAR或EJB JAR文件的一部分,或者可以   打包成可以的JAR文件   然后被包含在WAR或EAR中   文件。

     

如果将持久单元打包为   EJB JAR文件中的一组类,   persistence.xml应放入。{1}}   EJB JAR的META-INF目录。

     

如果将持久性单元打包为   WAR文件中的一组类,   persistence.xml应该位于   WAR文件   WEB-INF/classes/META-INF目录。

     

如果打包持久性单元   将包含在a中的JAR文件   WAR或EAR文件,JAR文件应该   位于:

     
      
  • 在WAR的WEB-INF/lib目录中。
  •   
  • 在EAR文件的顶层。
  •   
  • 在EAR文件的库目录中。
  •   
     

persistence.xml档案

     

persistence.xml定义了一个或多个   持久性单位。以下是   示例persistence.xml文件。

<persistence>
    <persistence-unit name="OrderManagement">
        <description>This unit manages orders and customers.
            It does not rely on any vendor-specific features and can
            therefore be deployed to any persistence provider.
        </description>
        <jta-data-source>jdbc/MyOrderDB</jta-data-source>
        <jar-file>MyOrderApp.jar</jar-file>
        <class>com.widgets.Order</class>
        <class>com.widgets.Customer</class>
    </persistence-unit>
</persistence>
     

此文件定义了持久性单元   名为OrderManagement,使用   支持JTA的数据源   jdbc/MyOrderDBjar-file和。{   class个元素指定托管   持久化类:实体类,   可嵌入的类,并映射   超。 jar-file元素   指定可见的JAR文件   到打包的持久性单元   包含托管持久性类,   而class元素显式   名称管理持久性类。

     

jta-data-source(适用于JTA感知   数据来源)和   non-jta-data-source(非JTA感知   数据源)元素指定   数据源的全局JNDI名称   被容器使用。