我一直在寻找答案,但找不到任何答案,所以向这个非常合适的社区提出这些问题!
- 我有一个独立的 Java 应用程序,可以部署在许多环境中:dev、qa、stage、production。因此,每个环境都有自己的数据源/数据库,并且有一些属性文件根据应用程序运行的环境管理不同的属性。因此,在我的 persistence.xml 中,我为 dev 定义了一个持久性单元。在同一个文件中,我还想为其他环境定义持久性单元。这样做时,Eclipse(Indigo - 最新)抱怨如下:“定义了多个持久性单元 - 只有第一个持久性单元将被识别”。 我假设我所做的是合法的,这是一个 Eclipse 问题.. 任何人都可以确认吗?还,
- 我假设任何标有 @Entity 注释的实体 bean 都会自动被拾取,而不必像这样在 persistence.xml 文件中显式定义它
<class>com.mycompany.model.MyEntityBean</class>
:如果我在文件中省略了实体类的显式包含,实体 bean(尽管已注释)会引发错误: “类“com.mycompany.model.MyEntityBean”已映射,但未包含在任何持久性单元中” 我我假设错了吗? - 我的最后一个问题是关于 db 凭据:将我的 db 凭据以纯文本形式放在 persistence.xml 文件中是最佳实践吗?有没有更安全的替代方案?
谢谢社区!
ps - 我使用 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>