2013-09-03 4 views
12

Единицы сохранения в persistence.xml создаются во время создания приложения. Как я хочу изменить URL-адрес базы данных во время выполнения, есть ли способ изменить блок персистентности во время выполнения? Я должен использовать другую базу данных, кроме предварительно привязанной после раздачи.Динамическая динамическая динамика - JPA

Я использую EclipseLink (JPA 2.1)

+0

Вы используете какой-либо сервер? –

+0

Nop. Это автономное приложение. Серверы баз данных Oracle-12c и SQL Server 9.0.x –

ответ

25

Сохраните файл единицы сохранения (Persistence.xml) как есть. Вы можете переопределить свойства в нем следующим образом.

EntityManagerFactory managerFactory = null; 
Map<String, String> persistenceMap = new HashMap<String, String>(); 

persistenceMap.put("javax.persistence.jdbc.url", "<url>"); 
persistenceMap.put("javax.persistence.jdbc.user", "<username>"); 
persistenceMap.put("javax.persistence.jdbc.password", "<password>"); 
persistenceMap.put("javax.persistence.jdbc.driver", "<driver>"); 

managerFactory = Persistence.createEntityManagerFactory("<current persistence unit>", persistenceMap); 
manager = managerFactory.createEntityManager(); 
0

долгоживущих архитектуры сессии вы должны создать рамки Plug-в-.

Поэтому вам нужно создать другую группу потоков и класс-репозиторий.

Это может быть ваш класс-погрузчик-Tree

  • System-Class-Loader (обычно URLClassLoader, содержит Entitys)
    • JPA-класса Loader
      • Загрузите JPA .jar с persistence.xml внутри, укажите конфигурацию базы данных из Application-Class-Loader
      • Включите ваш entityManager/session-factory.
      • Загрузите любой плагин, необходимый для работы с базой данных. Выполнение тестов модулей (; D) и тестирования интеграции плагинов.
2

Вы можете использовать Persistence.createEntityManagerFactory (Карта), чтобы передать свойства, чтобы выбрать URL базы данных и другие параметры.

+0

Звучит неплохо. Позвольте мне попробовать. –

Смежные вопросы