2012-04-28 3 views
1

Это не проблема, но это иногда раздражает во время моего развития. Предположим, у меня есть несколько объектов (db создается по этим объектам, а не иначе), и я решил добавить столбец, удалить столбец или что-то еще, и теперь мне нужно зафиксировать эти изменения в моей БД.Изменение дизайна базы данных с JPA

Каков наилучший способ сделать это? Иногда мне приходится перезапускать Glassfish; иногда их развертывания достаточно; иногда мне нужно стирать таблицы вручную, потому что перезагрузка не поможет. Моя стратегия в persistence.xml установлена ​​в Create, но другие варианты мне действительно не помогли.

Существует ли какой-либо стандартный подход для внесения изменений от сущностей в базу данных?

ответ

1

Из того, что я знаю, нет стандартного способа в JPA для автоматического изменения таблиц во время разработки и сохранения данных в таблице. В некоторых случаях переход на CREATE-DROP будет делать трюк, но тогда вы потеряете данные в таблице и довольно быстро должны будете писать сценарии для заполнения указанной таблицы. Как вы сказали, это не большая проблема для вас, и может быть хорошей практикой перейти от CREATE-DROP к методу, который работает в проектах с несколькими людьми. Мой/наш способ состоит в том, чтобы иметь файл сценария sql в репо, и когда я изменяю свои полномочия, я (вручную) изменяю этот скрипт или добавляю новый скрипт (последний, если таблица уже находится в производстве или данные в таблице либо более нескольких строк вставок, либо созданных с использованием, а не легко воспроизводимых). Таким образом, мы работаем с постоянно объединенным и исполняемым кодом. Другие участники проекта, желающие запустить текущую ветвь развития против (local?) Db, где таблица устарела, просто должны выполнить sql-скрипт.

+0

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

+0

Звуки например, IDE или здание + развертывание конкретной ситуации. Если вы повторно развернете приложение (ушной файл) через asadmin, CREATE-DROP должен быть правильно выполнен и не нужен перезапуск стеклянной рыбы. Если вы развертываете с помощью maven-script или netbeans/eclipse/независимо от того, что может возникнуть какая-либо проблема с конфигурацией или даже общая проблема cache/tmp-dir. – esej

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