spring+struts2+hibernate3同时操作多个数据库,具体点就是同时从多个不同的数据库中查询数据显示在页面上。
这里设计到多个数据源。可不可以这样在applicationcontext.xml中配置多个sessionfactory和多个datasource?
在后台怎样获取所有数据库的所有session呢?
事物又怎么配置?
是不是还得应用多线程呢?
如果能给出例子,将不胜感激!
这里设计到多个数据源。可不可以这样在applicationcontext.xml中配置多个sessionfactory和多个datasource?
在后台怎样获取所有数据库的所有session呢?
事物又怎么配置?
是不是还得应用多线程呢?
如果能给出例子,将不胜感激!
<bean id="oraclesessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>WEB-INF/classes/oracle-h.cfg.xml</value>
</property>
</bean>
<bean id="oracletransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<!--2、SQLServer 数据源配置-->
<bean id="sqlServersessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>WEB-INF/classes/sqlserver-h.cfg.xml</value>
</property>
</bean>
<bean id="sqlServerTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sqlServersessionFactory" />
</property>
</bean>
<!--3、其他数据源配置-->
1楼的做法正确~
创建一个session就可以访问多个数据库
<bean id="oraclesessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>WEB-INF/classes/oracle-h.cfg.xml</value>
</property>
</bean>
<bean id="oracletransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<!--2、SQLServer 数据源配置-->
<bean id="sqlServersessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>WEB-INF/classes/sqlserver-h.cfg.xml</value>
</property>
</bean>
<bean id="sqlServerTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sqlServersessionFactory" />
</property>
</bean>
<!--3、其他数据源配置-->
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1/test"/>
<property name="username" value="root"/>
<property name="password" value="76554792"/>
</bean> <bean id="dangdangDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1/dangdang"/>
<property name="username" value="root"/>
<property name="password" value="76554792"/>
</bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.current_session_context_class">thread</prop>
<prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</prop>
</props>
</property>
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
<bean id="dangdangSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dangdangDataSource"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.current_session_context_class">thread</prop>
<prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</prop>
</props>
</property>
<property name="configLocation">
<value>classpath:hibernate.dangdang.cfg.xml</value>
</property>
</bean> <bean name="dangdangDAO" class="dangdangdao.DangdangDAO">
<property name="dangdangSessionFactory" ref="dangdangSessionFactory"/>
</bean> <bean name="testDAO" class="dao.TestDAO">
<property name="sessionFactory" ref="sessionFactory"/>
</bean> <bean name="dangdangService" class="dangdangservice.DangdangService">
<property name="dangdangDAO" ref="dangdangDAO"/>
</bean> <bean name="testService" class="service.TestService">
<property name="testDAO" ref="testDAO"/>
<property name="test1Service" ref="test1Service"/>
</bean>
<bean name="test1Service" class="service.Test1Service">
<property name="testDAO" ref="testDAO"/>
</bean> <bean name="/test" class="action.TestAction">
<property name="testService" ref="testService"/>
<property name="test1Service" ref="test1Service"/>
<property name="dangdangService" ref="dangdangService"/>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<bean id="transactionAdvisor" class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
<property name="transactionInterceptor" ref="transactionInterceptor" />
</bean>
<bean id="beanproxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<value>*Service</value>
</property>
<property name="interceptorNames">
<list>
<value>transactionAdvisor</value>
</list>
</property>
</bean>
<bean id="dangdangTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="dangdangSessionFactory"/>
</bean>
<bean id="dangdangTransactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="dangdangTransactionManager" />
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<bean id="dangdangTransactionAdvisor" class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
<property name="transactionInterceptor" ref="dangdangTransactionInterceptor" />
</bean>
<bean id="dangdangbeanproxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<value>*DangdangService</value>
</property>
<property name="interceptorNames">
<list>
<value>dangdangTransactionAdvisor</value>
</list>
</property>
</bean></beans>