使用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
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值