【问题标题】:How to configure & package a simple Java app to use JPA如何配置和打包一个简单的 Java 应用程序以使用 JPA
【发布时间】:2009-12-12 02:46:11
【问题描述】:

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

我正在使用 Weblogic 10.3。

【问题讨论】:

  • 你真的必须从“简单的Java命令行应用程序”和“使用Weblogic”中选择一个
  • :) 好的,我的电脑有 WL 10.3 库。尽管如此,我试图让应用程序尽可能简单。我是 Java/JEE/JPA 的新手,所以我对如何设置目录结构和其他配置/打包细微差别有点困惑。

标签: java jpa persistence weblogic-10.x


【解决方案1】:

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

【讨论】:

  • 如果我创建的不是网络应用程序,而是简单的命令行应用程序,上述内容是否适用?
  • 我相信它应该——而不是你的课程在WEB-INF/classes/,他们只会在classes/,所以META-INF应该是一个顶级目录。
【解决方案2】:

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

无论如何,所有您正在寻找的详细信息都可以在The Java EE 5 TutorialPersistence Units 部分中找到,我在下面引用:

持久性单位

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

持久性单位由 persistence.xml 配置文件。 其 JAR 文件或目录 META-INF 目录包含 persistence.xml 被称为根 的持久性单元。范围 持久性单元由下式确定 持久化单元的根。

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

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

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

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

如果您将持久性单元打包在 将包含在一个 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-fileclass 元素指定托管 持久性类:实体类, 可嵌入的类,并映射 超类。 jar-file 元素 指定可见的 JAR 文件 到打包的持久性单元 包含托管持久性类, 而类元素显式 命名托管持久性类。

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

【讨论】:

    猜你喜欢
    • 2011-10-29
    • 2020-04-22
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    相关资源
    最近更新 更多