如何使用hibernate对不同数据库的两张表进行增删改,而且要在hibernate的xml文件中实现

 我来答
liyuanjundy
2014-08-29 · 超过34用户采纳过TA的回答
知道答主
回答量:90
采纳率:100%
帮助的人:43.8万
展开全部

配置两个数据源,两个DAO对象,分别使用不同的数据源就可以了

<!-- 定义数据源 -->    
    <bean id="dataSource1" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    
        <!-- 指定连接数据库的驱动 -->
        <property name="driverClass" value="${jdbc.driver}"/>
        <!-- 指定连接数据库的URL -->
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <!-- 指定连接数据库的用户名 -->
        <property name="user" value="${jdbc.username}"/>
        <!-- 指定连接数据库的密码 -->
        <property name="password" value="${jdbc.password}"/>
        
        ...     
    </bean>
    
    <bean id="dataSource2" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    
        <!-- 指定连接数据库的驱动 -->
        <property name="driverClass" value="${jdbc.driver1}"/>
        <!-- 指定连接数据库的URL -->
        <property name="jdbcUrl" value="${jdbc.url1}"/>
        <!-- 指定连接数据库的用户名 -->
        <property name="user" value="${jdbc.username1}"/>
        <!-- 指定连接数据库的密码 -->
        <property name="password" value="${jdbc.password1}"/>
        
       ...    
    </bean>
    
    ...
    
    <!-- SessionFactory配置 -->
    <bean id="sessionFactory_old" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="dataSource1" />
       ...
    </bean>
    
    <bean id="sessionFactory_new" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="dataSource2" />
       ...
    </bean>
    
    DAO:
    @Repository
    public class BaseDao<T> extends HibernateDaoSupport {

        protected Class<T> entityClass;
    
        private SessionFactory mySessionFacotry;
    
        @Resource(name="sessionFactory_old")
        public void setMySessionFacotry(SessionFactory sessionFacotry) {
            this.mySessionFacotry = sessionFacotry;
        }
        
         @PostConstruct
        public void injectSessionFactory() {
            super.setSessionFactory(this.mySessionFacotry);
        }
    }
    
    @Repository
    public class NewBaseDao<T> extends HibernateDaoSupport {
    
        protected Class<T> entityClass;
    
        private SessionFactory mySessionFacotry;
    
        @Resource(name="sessionFactory_new")
        public void setMySessionFacotry(SessionFactory sessionFacotry_new) {
            this.mySessionFacotry = sessionFacotry_new;
        }
    
        @PostConstruct
        public void injectSessionFactory() {
            super.setSessionFactory(this.mySessionFacotry);
        }
    }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式