<!-- configure hibernate session factory for FirstDB --><bean id="dataSource" destroy-method="close" p:driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" p:url="jdbc:sqlserver://${FirstDB_DB_HosName}${FirstDB_DB_instanceName}:${FirstDB_DB_PortNumber};databaseName=${FirstDB_DB_DatabaseName};username=${FirstDB_DB_UserName};password=${FirstDB_DB_Password};" /><bean id="sessionFactory" > <property name="dataSource" ref="dataSource" /> <property name="configLocation"> <value>classpath:hibernate.cfg.xml</value> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop> <prop key="hibernate.current_session_context_class">thread</prop> <prop key="show_sql">false</prop> </props> </property></bean> <!-- configure hibernate session factory for SecondDB database --><bean id="SecondDBdataSource" destroy-method="close" p:driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" p:url="jdbc:sqlserver://${SecondDB_DB_HOST}${SecondDB_DB_INSTANCE}:${SecondDB_DB_PORT};databaseName=${SecondDB_DB_DATAbaseNAME};username=${SecondDB_DB_USERNAME};password=${SecondDB_DB_PASSWORD};" /> <bean id="secondDBSessionFactory" > <property name="dataSource" ref="SecondDBdataSource" /> <property name="configLocation"> <value>classpath:hibernate-SecondDB.cfg.xml</value> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop> <prop key="hibernate.current_session_context_class">thread</prop> <prop key="show_sql">false</prop> </props> </property> </bean>在Hibernate DAO中,我们可以使用@Qualifier注释,如下所示连接2个会话工厂
@Transactional(propagation= Propagation.REQUIRED, readonly=false)public class HibernateDao<E, K extends Serializable> implements GenericDao<E, K> { @Autowired @Qualifier(value="sessionFactory") private SessionFactory sessionFactory; @Autowired @Qualifier(value="secondDBSessionFactory") private SessionFactory secondDBSessionFactory; protected Class<? extends E> daoType; public HibernateDao() { daoType = (Class<E>) ((ParameterizedType) getClass().getGenericSuperclass()) .getActualTypeArguments()[0]; } //Remaining Code}


