JPA persistence.xml источник данных для приложения SE - PullRequest
1 голос
/ 19 марта 2012

Различные источники (например, Oracle ) говорят, что вы должны указать детали соединения jdbc в своем файле persistence.xml для приложений Java SE, которые используют JPA через такие вещи, как <property name="javax.persistence.jdbc.url" value="..."/>.

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

Проблемы с этим:

  • Дублирование конфигурации.Когда я добавляю класс Entity, я должен добавить <class>MyClass</class> к каждой единице постоянства.Я бы предпочел просто указать его один раз.
  • Конфигурация подключения к базе данных, прилагаемая к приложению.Если я хочу изменить базу данных, используемую в среде, мне нужно поиграть с persistence.xml и пересобрать приложение.Я бы предпочел иметь конфигурационный файл в каждой из моих сред, в котором указаны учетные данные базы данных.Таким образом, у меня может быть много сред, но определен только один постоянный модуль, и я могу изменить учетные данные базы данных для данной среды, просто отредактировав один файл в этой среде и затем перезапустив приложение.

Вам известен лучший способ настроить постоянство?Есть ли способ заставить <jta-data-source> или <non-jta-data-source> сделать что-то подходящее в среде Java SE?

1 Ответ

1 голос
/ 19 марта 2012

Вы можете настроить его вручную в коде

Map<String, String> props = new HashMap<String, String>();
props.put("javax.persistence.jdbc.url", "YourURL");
EntityManagerFactory emf = Persistence.createEntityManagerFactory("UnitName", props);
EntityManager em = emf.createEntityManager();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...