В последнее время есть много людей, которые консультируются с тем, как настроить несколько источников данных для Spring, и отвечать на них один за другим проблематичным, и конфигурация в предыдущих сообщениях в блоге также проблематична, поэтому я выпущу демонстрацию для всех.
В демонстрации есть два источника данных, а именно MySQL и Oracle, и были проведены простые тесты. Нет проблем в динамическом переключении источников данных. Я надеюсь, что эта демонстрация может помочь всем.
Демонстрационный адрес:
Весна Динамически переключает многодату источника демо: http://xiazai.vevb.com/201701/yuanma/dynamicdatasourcedemo_jb51.rar
Я также дам некоторые объяснения, чтобы объяснить ключевые моменты при настройке многоданных источников:
1. Обратите внимание на конфигурацию перехватчика транзакций
Это первый приоритет. Прежде всего, вы должны понимать, что управление транзакциями Spring связано с источником данных. Как только программа выполняется на уровне управления транзакциями (например, служба), поскольку транзакция была открыта через перехватчик перед входом в этот уровень, невозможно переключить источник данных на этом уровне. Особенно важно понять принцип транзакций. В моей предыдущей статье проблематично настроить перехватчик для переключения источника данных на слое DAO (потому что это пример, я небрежен и извиняюсь за то, что вводит в заблуждение всех), но предоставленные идеи не являются проблематичными.
В демонстрации DataSourceInterceptor, который переключает источники данных, настроен на предыдущем уровне перехватчика транзакции (TXADVICE), то есть уровня контроллера.
2. Обратите внимание на создание таблиц баз данных
Некоторым людям нравится использовать функцию автоматического создания таблицы Hibernate, но следует отметить, что в нескольких источниках данных, особенно в нескольких источниках данных различных баз данных, невозможно автоматически создавать таблицы. Поскольку автоматическое создание Hibernate Automatic запускается при запуске проекта, создаются только таблицы для источника данных по умолчанию, настроенным проектом, в то время как таблицы для других источников данных не создаются автоматически. Каждый должен обратить внимание.
3. Диалект базы данных Hibernate можно игнорировать
При нескольких источниках данных настройки диалекта можно игнорировать. Hibernate автоматически распознает различные базы данных при использовании, поэтому нет необходимости беспокоиться об этой конфигурации, и даже возможно не настраивать ее.
4. Сообщите об отсутствии текущей ошибки сеанса
Это вызвано использованием sessionFactory.getCurrentSession (). Текущий сеанс связан с потоком. Поток откроет только один сеанс (не будет ошибки, если вы не используете OpenSession ()). Следовательно, необходимо установить связь между сеансом и потоком.
Демо использует Spring для управления сеансом Hibernate, поэтому OpenSessionInViewFilter настроен в web.xml, а Current_Session_context_class настроен в hibernate.cfg.xml. [PS: при использовании Spring для управления Hibernate вы можете удалить hibernate.cfg.xml, а файлы конфигурации всех настроенных пружины являются HibernateProperties. Зависит от личных предпочтений]
Наконец, некоторые фреймворки просто интегрированы в демонстрацию, которые удобны для всех. Это выгода для всех. Я не буду объяснять конфигурацию и технологию этих структур здесь. Если вы хотите знать, вы можете проверить адрес:
Spring Multi-Data Source Configuration: //www.vevb.com/article/102282.htm
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.