使用Hibernate映射技术将Mysql数据复制到Oracle数据库

 

第一步、建立实体类

  1. package joyo.entity;

  2. import java.io.Serializable;

  3. public class Category implements Serializable{

  4.        
  5.         private static final long serialVersionUID = 1L;
  6.        
  7.         private Integer id;
  8.         private String enName;
  9.         private String cnName;
  10.         private String abridge;
  11.         private String value;
  12.        
  13.         public Integer getId() {
  14.                 return id;
  15.         }
  16.         public void setId(Integer id) {
  17.                 this.id = id;
  18.         }
  19.         public String getEnName() {
  20.                 return enName;
  21.         }
  22.         public void setEnName(String enName) {
  23.                 this.enName = enName;
  24.         }
  25.         public String getCnName() {
  26.                 return cnName;
  27.         }
  28.         public void setCnName(String cnName) {
  29.                 this.cnName = cnName;
  30.         }
  31.         public String getAbridge() {
  32.                 return abridge;
  33.         }
  34.         public void setAbridge(String abridge) {
  35.                 this.abridge = abridge;
  36.         }
  37.         public String getValue() {
  38.                 return value;
  39.         }
  40.         public void setValue(String value) {
  41.                 this.value = value;
  42.         }
  43.        
  44.        
  45. }

 

第二步,分别建立mysql和Oracle的实体xml映射文件(也可以设置成不同配置文件映射同一映射文件)
mysql:

  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <!DOCTYPE hibernate-mapping PUBLIC
  3.                 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4.                 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  5.                
  6. <hibernate-mapping>
  7.         <class name="joyo.entity.Category" table="category">
  8.                 <id name="id" type="int" column="id">
  9.                         <generator class="assigned"/>
  10.                 </id>
  11.                 <property name="enName" type="string" column="enName"/>
  12.                 <property name="cnName" type="string" column="cnName"/>
  13.                 <property name="abridge" type="string" column="abridge"/>
  14.                 <property name="value" type="string" column="value"/>
  15.         </class>
  16. </hibernate-mapping>

 

Oracle:

  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <!DOCTYPE hibernate-mapping PUBLIC
  3.         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4.         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

  5. <hibernate-mapping>
  6.         <class name="joyo.entity.Category" table="category">
  7.                 <id name="id" type="int" column="id" unsaved-value="null">
  8.                         <generator class="assigned" />
  9.                 </id>
  10.                 <property name="enName" type="string" column="enName" />
  11.                 <property name="cnName" type="string" column="cnName" />
  12.                 <property name="abridge" type="string" column="abridge" />
  13.                 <property name="value" type="string" column="value" />
  14.         </class>
  15. </hibernate-mapping>

 

第三步:建立Mysql和Oracle配置xml文件(主要为数据库的配置信息)
Mysql:

  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <!DOCTYPE hibernate-configuration PUBLIC
  3.                 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4.                 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  5.                
  6. <hibernate-configuration>
  7.         <session-factory>
  8.                 <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
  9.                 <property name="connection.url">
  10.                         jdbc:mysql://127.0.0.1:3306/dms?useUnicode=true&amp;characterEncoding=utf8
  11.                 </property>
  12.                 <property name="connection.username">root</property>
  13.                 <property name="connection.password">root</property>
  14.                
  15.                 <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
  16.                 <property name="show_sql">true</property>
  17.                 <mapping resource="joyo/entity/Category.hbm.xml"></mapping>
  18.         </session-factory>
  19. </hibernate-configuration>
 
 
Oracle:
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <!DOCTYPE hibernate-configuration PUBLIC
  3.                 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4.                 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  5.                
  6. <hibernate-configuration>
  7.         <session-factory>
  8.                 <!-- Database connection settings -->
  9. <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
  10.                 <property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:XE</property>
  11.                 <property name="connection.username">xiaojin</property>
  12.                 <property name="connection.password">xiaojin</property>
  13.                
  14.                 <!-- SQL dialect -->
  15.                 <property name="dialect">org.hibernate.dialect.OracleDialect</property>
  16.                 <!-- 显示执行过的sql -->
  17.                 <property name="show_sql">true</property>
  18.                 <!-- 引入映射文件 -->
  19.                 <mapping resource="joyo/entity/CategoryOracle.hbm.xml"/>
  20.         </session-factory>
  21. </hibernate-configuration>

 

第四步、分别在Mysql和Oracle下创建数据表
在Mysql下创建数据表,并导入数据:
  1. create table category (
  2.      id int(12) primary key ,
  3.      enName varchar(30) ,
  4.      cnName varchar(30) ,
  5.      abridge varchar(30) ,
  6.      value varchar(30)
  7. )ENGINE=InnoDB;
导入数据(例):source E:category_gbk.sql
在Oracle下创建数据表:
create table category (
     id number(12) primary key ,
     enName varchar2(30) ,
     cnName varchar2(30) ,
     abridge varchar2(30) ,
     value varchar2(30)
);(表结构要一致)
第五步:开始复制数据,创建单元测试类
  1. public class SessionMethod {
  2.         private static SessionFactory MySQLFactory;
  3.         private static SessionFactory OracleFactory;
  4.        
  5.         @BeforeClass
  6.         public static void setUpBeforeClass(){
  7.                 //MYSQL
  8.                 try {
  9.                         Configuration config = new Configuration().configure("hibernate.cfg.xml");
  10.                         MySQLFactory = config.buildSessionFactory();
  11.                 } catch (HibernateException e1) {
  12.                        
  13.                         e1.printStackTrace();
  14.                 }
  15.                 //Oracle
  16.                 try {
  17.                         Configuration config2 = new Configuration().configure("hibernateOracle.cfg.xml");
  18.                         OracleFactory = config2.buildSessionFactory();
  19.                 } catch (HibernateException e) {
  20.                        
  21.                         e.printStackTrace();
  22.                 }
  23.         }
  24. @Test
  25.         public void replicate(){
  26.                 Session mysqlSession = MySQLFactory.openSession();
  27.                 String HQL = "FROM Category";
  28.                 Query query = mysqlSession.createQuery(HQL);
  29.                 List list = query.list();
  30.                
  31.                 mysqlSession.close();
  32.                
  33.                 Session oracleSession = OracleFactory.openSession();
  34.                 oracleSession.getTransaction().begin();
  35.                
  36.                 for(Object o:list){
  37.                         if(o instanceof Category){
  38.                                 Category c = (Category)o;
  39.                                 oracleSession.replicate(c,ReplicationMode.LATEST_VERSION);
  40. //                                oracleSession.save( o );
  41.                         }
  42.                 }
  43.                 oracleSession.getTransaction().commit();
  44.        
  45.                 oracleSession.close();
  46.                
  47.         }
  48. }
使用save()方法或者replicate()方法均能复制数据到Oracle数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaSE、Redis和JavaWeb、Spring、Hibernate、MyBatis、MySQLOracle都是Java开发中非常常用的技术,每个技术都有着不同的难点和学习曲线。 JavaSE是Java标准版,是Java编程的基础,包括了Java的基本语法、面向对象编程、集合框架、输入输出、多线程、网络编程等内容。对于初学者来说,JavaSE的学习难度较低。 Redis是一款基于内存的高性能键值存储系统,用于缓存、消息队列和实时数据处理等场景。Redis的学习难度较低,但要深入了解其底层原理和使用场景,需要更多的实践和经验。 JavaWeb是指在Java平台上进行Web开发,包括了Servlet、JSP、JDBC、HTML等内容。JavaWeb的学习难度较低,但需要掌握一些基本的Web开发技能和常用的Web框架。 Spring是一个开源的企业级应用开发框架,主要用于简化企业级应用的开发。Spring的学习难度较高,需要深入理解其设计思想和核心原理,同时需要掌握许多Spring相关的技术和工具。 Hibernate是一个开源的对象关系映射框架,用于将Java对象映射到关系数据库表中。Hibernate的学习难度较高,需要掌握一些ORM相关的基础知识和Hibernate使用方法。 MyBatis是一个开源的持久层框架,用于将SQL语句和Java对象进行映射。MyBatis的学习难度较高,需要掌握一些基本的ORM相关知识和MyBatis的使用方法。 MySQLOracle都是关系型数据库管理系统,用于存储和管理数据MySQL的学习难度较低,但需要掌握一些基本的SQL语句和MySQL使用方法。Oracle的学习难度较高,需要掌握一些高级SQL语句和Oracle使用方法,同时还需要了解Oracle的体系结构和底层原理。 综上所述,每个技术都有着不同的难点和学习曲线,没有哪个技术一定比其他技术更难。学习Java开发需要全面掌握这些技术,并且注重理论和实践的结合,才能够成为一名优秀的Java程序员。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值