Управление статическими данными - PullRequest
0 голосов
/ 19 августа 2009

Я ищу решение Java (или Groovy) для управления статическими данными, то есть данными в редко меняющихся таблицах, таких как список стран.

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

DbUnit - это библиотека, которая поддерживает загрузку данных в БД из файла XML. Он имеет операцию обновления , которая почти делает то, что мне нужно. Это вставит все строки, которые есть в файле, но не в БД, обновит все строки в БД, которые также находятся в файле, но не удалит строки, которые есть в БД, но не в файле.

Кто-нибудь нашел хорошее решение этой проблемы?

Спасибо, Дон

Ответы [ 3 ]

1 голос
/ 20 августа 2009

Я решил эту проблему раньше, отложив ограничения.

Обычно ограничения проверяются при вставке или обновлении данных в строке. Когда строка вставлена, все ограничения проверяются, и строка либо принимается, либо отклоняется. Однако вы можете отложить проверку ограничений до момента фиксации транзакции. см:

http://www.remote -dba.cc / t_garmany_easysql_deferred_constraints.htm

Это специфичное для продавца поведение. Он работает в Oracle, но, насколько мне известно, не поддерживается в MySQL.

0 голосов
/ 19 августа 2009

Если вы используете Hibernate, вы можете использовать Castor для загрузки XML-файла стран (например) в объекты модели Hibernate, а затем сохранить эти объекты.

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

  • Загрузка XML в объекты Hibernate через Castor
  • Для каждого объекта:
    • Если объект находится в БД, вызвать обновление
    • Если объект не находится в БД, вызвать save
  • тогда для каждой записи в БД
    • Сравните каждую запись с вашим списком объектов и удалите, если не найдено в вашем списке

Надеюсь, это понятно ... у нас есть похожий процесс, когда пользователь загружает файл XML для обновления БД.

0 голосов
/ 19 августа 2009

Существует несколько систем dbms с открытым исходным кодом, и dbunit выглядит разумно.

Я озадачен, почему вы хотите сохранить свою мастер-копию в виде текстового файла - почему бы не использовать базу данных в качестве мастера?

...