Red de conocimiento informático - Aprendizaje de programación - ¿Cómo implementar múltiples bases de datos con hibernate + spring + tomcat en un proyecto web java?

¿Cómo implementar múltiples bases de datos con hibernate + spring + tomcat en un proyecto web java?

El método solo puede ser la misma base de datos, porque diferentes bases de datos tienen diferentes dialectos, por lo que no se puede resolver por el momento.

Contexto de la aplicación.

& ltbean id = " fuente de datos principal " class = " org . Apache . commons . dbcp . fuente de datos básica " destroy-method = " close " >

<! -Establecer el valor inicial del grupo de conexiones->

& ltproperty name = "inicial size" value = " 5 "/>

& lt! -Establecer el grupo de conexiones máximo-& gt;

& ltproperty name = " max active " value = " 5 "/& gt;

& lt! -Establecer el valor mínimo de inactividad del grupo de conexiones-& gt;

& ltproperty name = " minIdle " value = " 2 "/& gt; -Establecer el valor máximo de inactividad del grupo de conexiones-& gt;

& ltproperty name = " maxIdle " value = " 5 "/>

& lt/bean & gt;

& ltbean id = " session factory " class = " org . spring framework . ORM . hibernate 3 . annotation . annotationsessionfactorybean " & gt;

& ltproperty name = " fuente de datos " ref = " fuente de datos "/& gt;

& ltproperty name = " propiedades de hibernación " & gt;

& ltvalue& gt

& lt! -Establecer dialecto de base de datos->

hibernate dialect = org . -Enviar sentencias SQL a la consola-& gt;

hibernate.show_sql=true

& lt! -Declaración SQL desde formato de impresión a consola->;

hibernate.format_sql=true

</value>

</property >

& ltproperty nombre = " paquetesToScan " valor = " com . zxw . enlace . negocio . " * *.

Entidad" ></property>

</bean>

<bean id = "fuente de datos" class = "com.zxw.link.commons fuente de datos dinámicos " >.

& ltproperty name = " fuentes de datos de destino " >>p>

& ltmap key-type = " Java . lang . string " & gt;

& ltentry key = " zxw " value-ref = " zxw _ fuente de datos "/& gt;

& ltentry key = " new _ back " value-ref = " new _ back _ fuente de datos "/& gt;

& lt!-Más fuentes de datos, escriba otra fuente de datos de acuerdo con el siguiente archivo de configuración y configure las entradas aquí->

& lt /map & gt;

& lt/property & gt;

& ltproperty name = "defaulttargetdata source" ref = "zxw_data source"/& gt;

</bean>

<bean id = "zxw_data source" parent = "fuente de datos principal">

<! - Configurar nombre del controlador JDBC ->

& ltproperty name = " controlador nombre de clase " valor = " controlador JDBC de Oracle "/& gt;

& lt! Establecer URL de conexión JDBC ->

& ltnombre de propiedad = " URL ". value = " JDBC:Oracle:thin:@ 148. 20. 20. 17:1521:oradb "/& gt;

& lt! -Establecer nombre de usuario de la base de datos-& gt;

& ltnombre de propiedad = " nombre de usuario " valor = " Zhou "/& gt;

& lt! -Establecer contraseña de base de datos-& gt;

& ltproperty name = " contraseña " valor = " Zhou "/& gt;

& lt/bean & gt;

<! -# # # # # # # # # # # # # # #Nueva copia de seguridad# # # # # # # # # #->

& ltbean id = " new _ back _ data source " padre = " fuente de datos principal ">

<! -Establecer nombre del controlador JDBC ->

& ltproperty name = " nombre de clase de controlador " valor = " Oracle . JDBC . controlador . Controlador Oracle "/& gt; -Establecer URL de conexión JDBC->

<proper

ty nombre = " URL " valor = " JDBC:Oracle:thin:@ 148 . 20 . 20 . 15:1521:ora 10 "/>

& lt! -Establecer nombre de usuario de la base de datos->

<Attribute name = " nombre de usuario " valor = " informe "/& gt;

<! -Establecer contraseña de base de datos-& gt;

& ltproperty name = " contraseña " valor = " informe "/& gt;

& lt/bean & gt;

<! -# # # # # # # # # # # # # # #Nueva Copia de Seguridad# # # # # # # # # ->

Fuente de datos dinámica. java:

La clase pública DynamicDataSource extiende AbstractRoutingDataSource {

Objeto protegido determineCurrentLookupKey() {

//TODO código auxiliar de método generado automáticamente

Regresar customercontextholder.getcustomertype();

}

}

CustomerContextHolder. java:

Clase pública CustomerContextHolder {

Hilo final estático privado ContextHolder local =

nuevo hilo local();

Vacío estático público setCustomerType(String customerType){

titular del contexto . set(tipo de cliente);

}

Cadena estática pública getCustomerType() {

return(String)titular de contexto . get();

}

Vuelo estático público clearCustomerType() {

titular de contexto remove(); p>

}

}

Llamado a la acción

Clase pública ZzhAction {

@Resource

Privado ZzhService zzhService

@RequestMapping("/zzh/test.do ")

Prueba de anulación pública(){

Lista & ltZzh & gtzzhs = zzh service . get all();

system . println(zzhs . size());

//Establezca la fuente de datos, los parámetros están en el archivo de configuración.

//<entry key = " new _ back " value-ref = " new _ back _ data source "/& gt;palabra clave

customercontextholder setcustomertype( " new _. atrás ");

}

}