2012-03-19 5 views
1

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

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

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

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

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

ответ

1

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

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(); 
+0

Спасибо. Таким образом, я мог бы управлять деталями соединения, как мне нравится, например. хранить их в файле на каждом сервере, читать их, инициализировать EMF. Я попробую и посмотрю, как это происходит. – Spycho

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