Recentemente, há muitas pessoas que estão consultando como configurar várias fontes de dados para a primavera e responder a uma a uma é problemática, e a configuração nas postagens anteriores do blog também é problemática, por isso lançarei uma demonstração para todos.
Existem duas fontes de dados em demonstração, a saber, MySQL e Oracle, e testes simples foram realizados. Não há problema em alternar dinamicamente as fontes de dados. Espero que essa demonstração possa ajudar a todos.
Endereço de download de demonstração:
Spring Switches Demonstração de origem multi-dados: http://xiazai.vevb.com/201701/yuanma/dynamicdatasourcecemo_jb51.rar
Também darei algumas explicações para explicar os pontos-chave ao configurar a fonte de vários dados:
1. Preste atenção à configuração do interceptador de transação
Esta é a primeira prioridade. Primeiro de tudo, você precisa entender que o gerenciamento de transações da primavera está vinculado à fonte de dados. Depois que o programa é executado para a camada de gerenciamento de transações (como serviço), como a transação foi aberta através do interceptador antes de entrar nessa camada, não é possível alternar a fonte de dados nessa camada. É particularmente importante entender o princípio das transações. No meu artigo anterior, é problemático configurar o interceptador para alternar a fonte de dados na camada DAO (porque é um exemplo, sou descuidado e peço desculpas por enganar a todos), mas as idéias fornecidas não são problemáticas.
Na demonstração, o DataSourceInterceptor que alterna as fontes de dados está configurado na camada anterior do interceptor de transação (Txadvice), ou seja, a camada do controlador.
2. Preste atenção à criação de tabelas de banco de dados
Algumas pessoas gostam de usar a função de criação automática de tabela do Hibernate, mas deve -se notar que, em várias fontes de dados, especialmente em várias fontes de dados de diferentes bancos de dados, não é possível criar tabelas automaticamente. Como a criação automática de tabela do Hibernate é acionada na inicialização do projeto, apenas as tabelas para a fonte de dados padrão configuradas pelo projeto são criadas, enquanto as tabelas para outras fontes de dados não são criadas automaticamente. Todos devem prestar atenção.
3. O dialeto de banco de dados do Hibernate pode ser ignorado
Quando várias fontes de dados, as configurações do dialeto podem ser ignoradas. O Hibernate reconhecerá automaticamente diferentes bancos de dados quando usado, portanto, não há necessidade de se preocupar com essa configuração e é possível não configurá -lo.
4. Relatório sem erro de sessão atual
Isso é causado pelo uso de sessionFactory.getCurrentSession (). A sessão atual está vinculada ao thread. Um thread abrirá apenas uma sessão (não haverá um erro, a menos que você use o OpenSession ()). Portanto, a relação de ligação entre a sessão e o thread precisa ser definida.
A demonstração usa o Spring para gerenciar a sessão de hibernato, portanto, o OpenSessionInViewFilter é configurado em web.xml e current_session_context_class está configurado em hibernate.cfg.xml. [PS: Ao usar o Spring para gerenciar o Hibernate, você pode remover o hibernate.cfg.xml, e os arquivos de configuração de todas as mola configurados são HibernateProperties. Dependem de preferências pessoais]
Finalmente, algumas estruturas são simplesmente integradas na demonstração, que são convenientes para todos usarem. É um benefício para todos. Não vou explicar a configuração e a tecnologia dessas estruturas aqui. Se você quiser saber, pode verificar o endereço:
Spring Multi-Data Fonte Configuração: //www.vevb.com/article/102282.htm
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.