论坛首页 Java企业应用论坛

hibernate访问两个数据库

浏览 3519 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2015-01-27  

该技术博客属于原创 ,转载请注明出处:http://www.pm-road.com/index.php/2015/01/06/330/

 

在项目开发过程中,往往需要跨数据库访问,而hibernate就可以使同一个项目访问不同的数据库。

 

比如说:1:需要访问同一个数据库,不同的用户名(用户名之间访问表的权限不同,具体可查看:oracle中不同用户对数据的影响);

 

2:访问不同的数据库,数据库类型相同;

 

3:访问不同的数据库类型;

 

以上这三种类型都可以用hibernate 实现 。

 

以下就是前两天碰到的一个项目,在这里总结一下PM 经验,接下来,就做一个例子,该例子是使用spring + hibernate 实现的。

 

1:修改spring-hibernate.xml   文件,添加如下代码:

 

 

 

 

 

<!–默认的访问数据库–>

<bean id=”sessionFactory”
        class=”org.springframework.orm.hibernate3.LocalSessionFactoryBean”>

<!–默认的数据库对应hibernate.cfg.xml文件–>
        <property name=”configLocation” value=”classpath:hibernate.cfg.xml”>
        </property>
    </bean>

 

<!–另一个数据库–>

 

<!–默认的数据库对应acgis_hibernate.cfg.xml文件(文件名自己定义)–>

 

<bean id=”bus_sessionFactory”
        class=”org.springframework.orm.hibernate3.LocalSessionFactoryBean”>
        <property name=”configLocation” value=”classpath:acgis_hibernate.cfg.xml”>
        </property>
   </bean>

 

 

 

 

2:在原来的基础上新建acgis_hibernate.cfg.xml  ,与hibernate.cfg.xml  同级别;内容如下(该文件的内容和hibernate.cfg.xml 内容相似,不同的就是访问数据库的用户名和密码,以及mapping中的实体类配置文件):

 

 

 

<hibernate-configuration>
    <session-factory>
        <!– 正式环境外网 –>
        <property name=”hibernate.connection.url”>jdbc:oracle:thin:@127.0.0.1:1521:orcl</property>
        <property name=”hibernate.connection.username”>pout</property>
        <property name=”hibernate.connection.password”>qazaq</property>
       
        <property name=”hibernate.connection.driver_class”>oracle.jdbc.driver.OracleDriver</property>
        <property name=”hibernate.dialect”>org.hibernate.dialect.Oracle9Dialect</property>
       
        <!– 设置是否在Log中显示Hiberate对数据查询的SQL语句,显示出来感觉意义不大,先关掉,需要Debug时再开  –>
        <property name=”hibernate.show_sql”>true</property>
        <property name=”hibernate.current_session_context_class”>thread</property>

        <!– C3P0 connection pool   以下配置可视自己的情况而定 –>
        <property name=”hibernate.connection.provider_class”>org.hibernate.connection.C3P0ConnectionProvider</property>
        <property name=”hibernate.c3p0.max_size”>50</property>
        <property name=”hibernate.c3p0.min_size”>2</property>
        <property name=”hibernate.c3p0.max_size”>50</property>
        <property name=”hibernate.c3p0.initialPoolSize”>2</property>
        <property name=”acquireRetryAttempts”>5</property>
 
        <property name=”hibernate.c3p0.timeout”>120</property>
        <property name=”hibernate.c3p0.max_statements”>100</property>
        <property name=”hibernate.c3p0.idle_test_period”>120</property>
        <property name=”hibernate.c3p0.acquire_increment”>2</property>
        <property name=”hibernate.c3p0.validate”>true</property>

       <!–访问该数据库,对应的实体类,如没有可以不要–>
        <mapping resource=”com/pm_road/tgs/bean/xml/V_station.hbm.xml” />    
        <mapping resource=”com/pm_road/tgs/bean/xml/V_route.xml” />    
        <mapping resource=”com/pm_road/tgs/bean/xml/V_rsrelation.xml” />    
        
    </session-factory>
</hibernate-configuration>

 

 

 

3:在声明Dao的配置文件中,根据不同的DAO 访问不同的数据库这样配置 :

 

 

 

<bean id=”infoDao” class=”com.pm_road.tgs.dao.impl.InfoDaoImpl”>
        <property name=”sessionFactory” ref=”sessionFactory“></property><!–对应上面的id  值”–>
    </bean>
    <bean id=”queryDao” class=”com.pm_road.tgs.dao.impl.QueryDaoImpl”>
        <property name=”sessionFactory” ref=”bus_sessionFactory“></property><!–对应上面的id  值”–>
    </bean>

 

 

 

 

4:配置结束,这样就可以在同一个项目中,访问不同的数据库。

   发表时间:2015-02-02  
提供一个bboss持久层的操作多数据源对比方案:
bboss持久层多数据源配置及使用方法

文档中同时涵盖了bboss多数据库事务管理功能内容,so easy.
0 请登录后投票
   发表时间:2015-02-03   最后修改:2015-02-03

干货分享,给力呀,正好学习这方面的东西,不错

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics