有人知道如何在hibernate配置中添加另一个数据源,以及如何在自己的DAO中将Spring配置为其自动注入该数据源吗?
这是我的带有一个数据源的代码,可以完美运行,但是我不知道如何添加另一个数据源。我想添加另一个数据源,该数据源是具有与实际数据库不同的表的数据库。
HIBERNATE CONF
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url" value="jdbc:mysql://localhost/personal"/> <property name="username" value="root"/> <property name="password" value="mysql"/> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource"> <ref local="dataSource"/> </property> <property name="packagesToScan"> <list> <value>com.app.personal.model</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">false</prop> </props> </property> </bean> <tx:annotation-driven/> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="sessionFactory"/> </property> </bean>
道例
@Repository public class ModuloDAOHibernate extends HibernateTemplate implements ModuloDAO { @Autowired public ModuloDAOHibernate(SessionFactory sessionFactory) { super(sessionFactory); } public List<Modulo> getAllGrupoModuloDAO() { Criteria criteriaList = this.getSession().createCriteria(Modulo.class); criteriaList.addOrder(Order.asc("orden")); return criteriaList.list(); }
好。我找到了另一个解决方案,并且使用了相同的方法:添加另一个dataSource和SessionFactory,然后在注入sessionFactory的DAO方法中,添加@Qualifier注释以及所需sessionFactory的属性,如下所示:
@Autowired public ProgramaSgteDAOHibernate(@Qualifier("sessionFactory3") SessionFactory sessionFactory) { super(sessionFactory); }