gpt4 book ai didi

用于开发/质量保证/阶段/生产的 JPA 多个持久性单元

转载 作者:行者123 更新时间:2023-12-04 12:23:36 26 4
gpt4 key购买 nike

我一直在寻找答案,但一直找不到答案,所以向这个非常合适的社区提出这些问题!

  • 我有一个独立的 Java 应用程序,可以部署在许多环境中:dev、qa、stage、production。因此,每个环境都有自己的数据源/数据库,并且有属性文件根据应用程序运行的环境来管理不同的属性。因此,在我的persistence.xml 中,我为dev 定义了一个持久性单元。在同一个文件中,我还想为其他环境定义持久性单元。这样做时,Eclipse (Indigo - latest) 会提示如下: “定义了多个持久性单元 - 只会识别第一个持久性单元”。 我假设我所做的是合法的,这是一个 Eclipse 问题.. 谁能确认?此外,鉴于我当前的设置,这是最佳实践所规定的吗?
  • 我假设任何标有 @Entity 注释的实体 bean 都会自动被选中,而无需在 persistence.xml 文件中明确定义它,如下所示:<class>com.mycompany.model.MyEntityBean</class> .如果我在文件中省略了实体类的显式包含,实体 bean - 尽管有注释 - 会抛出一个错误: “类“com.mycompany.model.MyEntityBean”已映射,但未包含在任何持久性单元中”我有什么我假设错了?
  • 我的最后一个问题是关于 db 凭据:将我的 db 凭据以纯文本形式放在persistence.xml 文件中是最佳做法吗?有没有更安全的替代方法?

  • 感谢社区!

    p.s - 我使用 EclipseLink 作为 JPA 供应商,这不重要吗?

    这是我的persistence.xml的一个例子
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="Development">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>com.mycompany.model.MyEntityBean</class>
    <properties>
    <property name="javax.persistence.jdbc.driver" value="com.ibm.db2.jcc.DB2Driver" />
    <property name="javax.persistence.jdbc.url" value="jdbc:db2://xxxxxxx" />
    <property name="javax.persistence.jdbc.password" value="xxxxxx" />
    <property name="javax.persistence.jdbc.user" value="xxxxxxxx" />
    </properties>
    </persistence-unit>
    <persistence-unit name="QA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>com.mycompany.model.MyEntityBean</class>
    <properties>
    <property name="javax.persistence.jdbc.driver" value="com.ibm.db2.jcc.DB2Driver" />
    <property name="javax.persistence.jdbc.url" value="jdbc:db2://xxxxxxx" />
    <property name="javax.persistence.jdbc.password" value="xxxxxx" />
    <property name="javax.persistence.jdbc.user" value="xxxxxxxx" />
    </properties>
    </persistence-unit>
    </persistence>

    最佳答案

  • "定义了多个持久化单元——只有第一个持久化单元
    单位将被识别”是 Eclipse (Dali) 问题。有关主题的更多信息
    您可以从 bug 231527 找到.
  • 因为您有独立的 Java SE 应用程序,实体应该列在 persistence.xml 中。在规范中,这详细说明如下:

  •       To insure the portability of a Java SE application, it is necessary
    to explicitly list the managed persistence classes that are included
    in the persistence unit using the class element of the persistence.xml
    file.

  • 如果您不想将密码设为纯文本,可以从 EclipseLink documentation 找到有关替代方案的一些信息。 .
  • 关于用于开发/质量保证/阶段/生产的 JPA 多个持久性单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10952032/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com