Динамическая динамическая динамика - JPA
Единицы сохранения в persistence.xml создаются при создании приложения. Как я хочу изменить URL-адрес базы данных во время выполнения, есть ли способ изменить блок персистентности во время выполнения? Я должен использовать другую базу данных, кроме предварительно привязанной после раздачи.
Я использую EclipseLink (JPA 2.1)
Ответы
Ответ 1
Сохраняйте файл единицы сохранения (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();
Ответ 2
Вы можете использовать Persistence.createEntityManagerFactory(Карта) для передачи свойств для выбора URL-адреса базы данных и других параметров.
Ответ 3
В долгоживущей архитектуре сеансов вы должны создать Plug-in-Framework.
Поэтому вам нужно создать другую группу Thread и Group-Repository.
Это может быть ваш класс-Loader-Tree
- System-Class-Loader (обычно это URLClassLoader, содержит Entitys)
- JPA-Класс-погрузчик
- Загрузите < jpa.jar
persistence.xml
внутри, укажите конфигурацию базы данных из Application-Class-Loader
- Превратите свой entityManager/session- factory.
- Загрузите любой плагин, необходимый для работы с DataBase. Выполнение тестов модулей (; D) и тестирования интеграции с плагинами.