JPA: создать базу данных, затем подключиться - PullRequest
1 голос
/ 28 ноября 2011

Я хочу создать базу данных в первый раз в процессе развертывания приложения.Я использую JPA.Поэтому я рассматриваю два способа.

1) У меня есть полное описание подключения в моем файле persistence.xml:

<property name="mysql.jdbc.user" value="root"/>
<property name="mysql.jdbc.password" value=""/>
<property name="mysql.jdbc.url" value="jdbc:mysql://localhost:3306/DB"/>
<property name="mysql.jdbc.driver" value="com.mysql.jdbc.Driver"/>

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

2) У меня есть соединение с сервером базы данных:

<property name="mysql.jdbc.user" value="root"/>
<property name="mysql.jdbc.password" value=""/>
<property name="mysql.jdbc.url" value="jdbc:mysql://localhost:3306/"/>
<property name="mysql.jdbc.driver" value="com.mysql.jdbc.Driver"/>

Приложение сообщает мне, что это первое соединениеи перенаправить меня на страницу установки.Во время установки БД файл persistence.xml следует изменить.Свойство mysql.jdbc.url должно быть изменено новым значением, в котором объявлено имя базы данных.

Что вы думаете об этом?Как это сделать?

Ответы [ 3 ]

3 голосов
/ 28 ноября 2011

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

Вам нужно либо создать его вручную, либо изучить его с помощью инструмента сборки, подобного Maven .

1 голос
/ 28 ноября 2011

Может быть, вам следует создать базу данных, используя файл persistence.xml. Например, для JBoss это свойство выглядит следующим образом:

<property name="hibernate.hbm2ddl.auto" value="create-drop"/>

Также обратите внимание на другие возможные значения.

0 голосов
/ 28 ноября 2011

Что вы можете сделать, это добавить сервлет, настроенный для запуска (один раз) при запуске приложения.Этот сервлет может проверить, существует ли база данных, и, если нет, создать ее программно.Проверьте ответы на этот вопрос , чтобы увидеть, как этого можно достичь для MySQL.Если у вас есть работающий сервер, вы можете получить соединение и запустить SQL для создания базы данных.После этого необходимые таблицы и тому подобное можно автоматически создавать, используя подходящее свойство для вашей реализации JPA (как показано в Nulldevice для Hibernate).

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

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

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