【问题标题】:Glassfish 3 with JPA configuration带有 JPA 配置的 Glassfish 3
【发布时间】:2012-09-26 08:17:32
【问题描述】:

我在独立应用程序中使用 JPA 和 Hibernate,但现在我想尝试使用应用程序服务器。我知道 GlassFish 为 JPA 提供了 EclipseLink 实现,但我有几个问题。

  1. 我需要在persistence.xmlEclipseLink 中指定我的持久性单元的提供者吗?
  2. persistence.xml 看起来是否与未部署应用程序一样?如果它看起来不一样,它看起来如何?
  3. 我是否需要专门下载 EclipseLink 的实现 jar 并使用它们进行构建,或者容器是否在我的应用程序部署后处理这个问题?
  4. 如何在persistence.xml中指定jdbc驱动?
  5. 我的应用程序是否需要部署为.ear

【问题讨论】:

    标签: java jakarta-ee jpa glassfish eclipselink


    【解决方案1】:
    1. 你不需要指定持久化提供者,默认情况下会使用你的应用服务器中包含的提供者(如果它至少有Web配置文件,当然,否则像Tomcat这样的服务器不会为您提供 EclipseLink)。

    2. 是的,它将具有相同的外观(在两个应用程序中,您只是以相同的方式使用 JPA)。

    3. 要编译您的代码,您只需要在类路径中包含 persistence-api.jar(如果您使用 Maven,请将范围设置为“已提供”)。然后服务器会自动提供它的实现jar。

    4. 您可以使用this page(“Java SE 环境中的典型配置”)中描述的持久性单元。但我宁愿建议你改用<jta-data-source>,它指的是datasource provided by GlassFish

    5. 据我所知,它也可以是 WAR 文件,我在部署它时没有任何问题(webapp 作为 Maven WAR 模块 + JAR 模块中的 bean)。

    【讨论】:

    • 部署似乎与 JdbcDriverResource 一起工作,虽然我不太明白 JTA 与 jdbc 驱动程序有什么关系?
    • 您正在配置整个数据源,而不仅仅是一个 JDBC 驱动程序。如果您更喜欢自己处理数据库事务,也许您应该考虑 标记...参见stackoverflow.com/questions/3753815/…
    • 还有一个问题; EntityManager 资源是默认创建的,还是我需要从管理员控制台创建它作为 JdbcPool 和 Jdbc 驱动程序?
    • 我认为 EntityManager 与服务器配置无关,一旦您声明持久性单元并使用 @PersistenceContext 在 EJB 中使用它,它就会由您的 JPA 提供者自动实例化。在 GlassFish 中唯一需要配置的是 Jdbc 资源 + 连接池。
    猜你喜欢
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    相关资源
    最近更新 更多