Переключение между встроенными базами данных в Java с JPA - PullRequest
2 голосов
/ 20 июля 2011

Сейчас я работаю над JPA 2.0, и мне начинает нравиться, как легко хранить постоянные данные.

В настоящее время я пытаюсь выполнить JPA в базовом настольном приложении. Приложение должно позволять мне открывать встроенные базы данных, которые находятся в моей файловой системе. На данный момент я выбрал базы данных H2, но я действительно могу перейти на JavaDB или что-то еще.

Что я пытаюсь сделать, так это то, что можно открыть файл базы данных без предварительного определения единицы постоянства в файле persistence.xml. Я могу легко определить единицу и сохранить объекты, но сначала ее нужно настроить.

Я хочу написать браузер базы данных, который позволяет открывать без предварительной настройки и перекомпиляции.

http://www.objectdb.com/java/jpa/start/connection

Я видел, что ObjectDB разрешает доступ для этого типа создания PersistenceFactory, но я не смог перенести этот пример в другие базы данных.

Я совершенно не прав, когда подхожу к этой проблеме? JPA не разработан с доступом к базе данных на лету?

Спасибо за вашу помощь, Johannes

Ответы [ 3 ]

2 голосов
/ 20 июля 2011

Не является частью стандарта JPA.Некоторые реализации могут предлагать собственный API для этого.Например, с помощью DataNucleus, если в конце вы перейдете на эту страницу http://www.datanucleus.org/products/accessplatform_3_0/jpa/persistence_unit.html, вы сможете создавать динамические единицы персистентности (и, следовательно, EMF), и эта реализация, очевидно, позволяет сохранять постоянство в самом широком диапазоне хранилищ данных, которые вы можете получить где угодно1003 *

2 голосов
/ 20 июля 2011

Вы можете передать карту свойств в вызов createEntityManagerFactory (), который определяет информацию о соединении с базой данных и т. Д. Имена свойств такие же, как в файле persistence.xml. Я предполагаю, что большинство поставщиков JPA поддерживают это, EclipseLink поддерживает.

Вам все равно нужно будет определить набор классов для базы данных и отобразить их.

Если у вас также нет классов, то вы можете посмотреть на динамическую поддержку EclipseLink,

http://wiki.eclipse.org/EclipseLink/Examples/JPA/Dynamic

1 голос
/ 20 июля 2011

Если вы хотите, чтобы браузер баз данных обращался к разным базам данных, вы не можете использовать PU / Entity Manager (imo).

Вам понадобится диалоговое окно, запрашивающее у пользователя IP / портбаза данных, имя пользователя / пароль, имя базы данных для доступа и тип базы данных.

Затем все, что вам нужно сделать, - это создать сокет, отправить запросы через сокет и проанализировать ответ в представлении.,Поскольку и запрос, и ответ зависят от базы данных, пользователь должен выбрать подходящий драйвер базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...