динамическое изменение базы данных гибернации для обслуживания - PullRequest
1 голос
/ 11 марта 2011

У меня есть веб-приложение на Java, использующее hibernate поверх базы данных MYSQL. Мне нужно как минимум час обслуживания данных ежедневно, поэтому мне нужно отключить базу данных и переключиться на резервную базу данных.
Я не вижу элегантного способа переключиться на другую базу данных из моего приложения, используя Hibernate. Есть?
Другие абсолютно разные способы обслуживания базы данных приветствуются.

1 Ответ

1 голос
/ 11 марта 2011

Поскольку вы используете Java WebApp, я предполагаю, что вы используете контейнер (например, Tomcat) или сервер приложений (например, JBoss). В обоих случаях вы должны использовать управляемые соединения с помощью контейнера через JNDI. В этом случае вы можете просто использовать JMX (или консоль администратора) для изменения фактического источника данных, для указания на резервную базу данных, очистки пула и повторного открытия новых соединений. Когда вы закончите, просто выполните те же шаги, указывая источник данных на фактическую базу данных.

Если вы не используете управляемые соединения в контейнере, вам не повезло. Поскольку конфигурация Hibernate является статической, вам необходимо завершить работу приложения, развернуть его новую версию с вашим persistence.xml / hibernate.cfg.xml, указывающим на резервную копию, выполнить обслуживание и развернуть «старую» версию когда вы сделали.

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