Множественные единицы персистентности JPA для dev/qa/stage/production

Я искал ответы на этот вопрос, но не смог найти ни одного, поэтому задаю эти вопросы этому очень подходящему сообществу!

  1. У меня есть отдельное Java-приложение, которое развертывается во многих средах: разработка, контроль качества, стадия, производство. Таким образом, каждая среда имеет свой собственный источник данных/базу данных, и существуют файлы свойств, которые управляют различными свойствами в зависимости от того, из какой среды работает приложение. Таким образом, в моем файле persistence.xml я определил единицу сохранения для dev. В том же файле я хотел бы определить единицы сохраняемости и для других сред. При этом Eclipse (Indigo - последняя версия) жалуется следующим образом: "Определено несколько единиц сохраняемости - будет распознаваться только первая единица сохраняемости".Я предполагаю, что то, что я сделал, является законным, и это проблема Eclipse.. кто-нибудь может подтвердить? Кроме того, это то, что диктуют лучшие практики, учитывая мою текущую настройку?
  2. Я исходил из того, что любой объектный компонент, помеченный аннотацией @Entity, будет автоматически выбран без необходимости явного определения его в файле persistence.xml следующим образом: com.mycompany.model. MyEntityBean. Если я опускаю явное включение класса сущности в файл, компонент сущности, хотя и аннотированный, выдает ошибку: «Класс «com.mycompany.model.MyEntityBean» сопоставлен, но не включен ни в одну единицу персистентности. «В чем я ошибся?
  3. Мой последний вопрос касается учетных данных базы данных: рекомендуется ли размещать мои учетные данные базы данных в файле 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>    
7
задан ustad 8 June 2012 в 17:32
поделиться