`

hibernate访问两个数据库

阅读更多

该技术博客属于原创 ,转载请注明出处: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:配置结束,这样就可以在同一个项目中,访问不同的数据库。

分享到:
评论

相关推荐

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围(transaction scope) 11.1.1. 操作...

    struts2+spring+hibernate(实现XML和Annotation两种方式操作数据库)

    项目访问URL时:http://localhost:8080/test_ssh/userLogin struts2+spring+hibernate(实现...把两个对象存入到数据库中 1、一种方法采用XML文件映射的方式 2、第二种方法采用annotation方式 注意spring配置文件的配置

    springMVC + Hibernate 工程模板

    两种配置:oracle mysql,切换数据库只要把SessionFactory的配置文件改成对应就可以了 c3p0配置:mysql调试通过,oracle由于存在问题,未配置 spring配置式事务管理(jdk动态代理,每个service必须对应一个接口) ...

    mongodb整合spring、hibernate、mysql

    mongodb整合spring、hibernate,同时数据库采用了mysql,在同一页面中同时显示两个数据访问结果。可直接运行!

    Springmvc+hibernate+mysql+mongodb

    这是一个经典的SpringMvc学习实例,其中集成了hibernate,同时数据库采用了mysql 和 mongodb,在同一页面中同时显示两个数据访问结果。值得大家学习。

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     5.1.2 Hibernate访问持久化类属性的策略  5.1.3 在持久化类的访问方法中加入程序逻辑  5.1.4 设置派生属性  5.1.5 控制insert和update语句  5.2 处理SQL引用标识符  5.3 创建命名策略  5.4 设置数据库Schema...

    深入浅出Hibernate源码

    10,在您的eclipse中,建立两个User Library: 菜单window -&gt; preference -&gt; Java -&gt; Build Path -&gt; User Librarys,分别建立名为Hibernate2,hibernate3,mysql-jdbc的用户库,分别包含对应的lib文件(如hibernate2包含...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    本章介绍Hibernate提供的两个工具hbm2java和hbm2ddl,它们能简化软件开发过程。 4.1 创建对象-关系映射文件 83 4.1.1 定制持久化类 85 4.1.2 定制数据库表 88 4.2 建立项目的目录结构 90 4.3 运行hbm2java工具 ...

    Hibernate+中文文档

    10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围(transaction scope) 11.1.1. 操作...

    hibernate 3中的缓存小结

    Session为应用程序提供了两个管理缓存的方法: evict(Object obj):从缓存中清除参数指定的持久化对象。 clear():清空缓存中所有持久化对象。 2.3. 二级缓存的管理: 2.3.1. Hibernate的二级缓存策略的一般过程如下...

    hibernate3.2中文文档(chm格式)

    10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围(transaction scope) 11.1.1. 操作...

    HibernateAPI中文版.chm

    10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围(transaction scope) 11.1.1. 操作...

    Struts2+Spring+Hibernate整合入门详解

    Struts:作为基于 MVC 模式的 Web 应用最经典框架,两个项目Struts 和webwork已经集成,成为现在的Struts2。目前的最新版本是2.0.9(2007-7)。 Spring: 是一个轻型的容器,利用它可以使用一个外部 XML 配置文件...

    第24次课-1 Spring与Hibernate的整合

    HibernateTemplate的灵活访问方式是通过如下两个方法完成的: Object execute(HibernateCallback action) List execute(HibernateCallback action) 开发者通过HibernateCallback,可以完全使用Hibernate灵活的方式来...

    Hibernate中文详细学习文档

    10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围(transaction scope) 11.1.1. 操作...

    Hibernate 中文 html 帮助文档

    10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围(transaction scope) 11.1.1. 操作单元(Unit...

    hibernate总结

    表:材料表和产品表多对多,在数据库中有中间表即产品材料表用来存放两个表之间的关系 Java类:材料PO,产品PO,中间PO,中间PO的复合主键类(由于是两个一对多形成的多对多,所以,这里只讲一个一对多,另一个是相同...

    最全Hibernate 参考文档

    10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围(transaction scopes) 11.1.1. 操作单元...

    hibernate 体系结构与配置 参考文档(html)

    在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围(transaction scope) 11.1.1. 操作单元(Unit...

Global site tag (gtag.js) - Google Analytics