Recientemente, hay muchas personas que consultan sobre cómo configurar múltiples fuentes de datos para Spring, y responderlas una por una es problemática, y la configuración en publicaciones de blog anteriores también es problemática, por lo que lanzaré una demostración para todos.
Hay dos fuentes de datos en demostración, a saber, MySQL y Oracle, y se han realizado pruebas simples. No hay problema en el cambio dinámico de fuentes de datos. Espero que esta demostración pueda ayudar a todos.
Dirección de descarga de demostración:
Spring Dynamicalmente cambia la demostración de la fuente multidata: http://xiazai.vevb.com/201701/yuanma/dynamicDataSourcedemo_jb51.rar
También daré algunas explicaciones para explicar los puntos clave al configurar la fuente de datos múltiples:
1. Presta atención a la configuración del interceptor de transacciones
Esta es la primera prioridad. En primer lugar, debe comprender que la gestión de transacciones de Spring está vinculada a la fuente de datos. Una vez que el programa se ejecuta a la capa de gestión de transacciones (como el servicio), dado que la transacción se ha abierto a través del interceptor antes de ingresar esta capa, no es posible cambiar la fuente de datos en esta capa. Es particularmente importante comprender el principio de las transacciones. En mi artículo anterior, es problemático configurar el interceptor para cambiar la fuente de datos en la capa DAO (porque es un ejemplo, soy descuidado y me disculpo por engañar a todos), pero las ideas proporcionadas no son problemáticas.
En la demostración, el Interceptor de datos de datos que cambia las fuentes de datos se configura en la capa anterior del interceptor de transacciones (TXAdVice), es decir, la capa del controlador.
2. Presta atención a la creación de tablas de bases de datos
A algunas personas les gusta usar la función de creación de tabla automática de Hibernate, pero debe tenerse en cuenta que en múltiples fuentes de datos, especialmente en múltiples fuentes de datos de diferentes bases de datos, no es posible crear automáticamente tablas. Debido a que la creación de la tabla automática de Hibernate se desencadena al inicio del proyecto, solo se crean tablas para la fuente de datos predeterminada configurada por el proyecto, mientras que las tablas para otras fuentes de datos no se crean automáticamente. Todos deberían prestar atención.
3. Se puede ignorar el dialecto de la base de datos de Hibernate
Cuando múltiples fuentes de datos, la configuración del dialecto se puede ignorar. Hibernate reconocerá automáticamente diferentes bases de datos cuando se use, por lo que no hay necesidad de preocuparse por esta configuración, e incluso es posible no configurarla.
4. Informe sin error de sesión actual
Esto es causado por el uso de sessionFactory.getCurrentSession (). La sesión actual está vinculada al hilo. Un hilo solo abrirá una sesión (no habrá un error a menos que use OpenSession ()). Por lo tanto, la relación vinculante entre la sesión y el hilo debe establecerse.
La demostración utiliza Spring para administrar la sesión de Hibernate, por lo que OpenSessionInviewFilter está configurado en Web.xml, y Current_Session_Context_Class se configura en hibernate.cfg.xml. [PD: Cuando usa Spring para administrar Hibernate, puede eliminar hibernate.cfg.xml, y los archivos de configuración de todos los primaveras configuradas son HibernateProperties. Depender de las preferencias personales]
Finalmente, algunos marcos simplemente están integrados en la demostración, que son convenientes para que todos los usen. Es un beneficio para todos. No explicaré la configuración y la tecnología de esos marcos aquí. Si desea saber, puede verificar la dirección:
Configuración de la fuente de múltiples datos de Spring: //www.vevb.com/article/102282.htm
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.