第一步、建立实体类
- package joyo.entity;
- import java.io.Serializable;
- public class Category implements Serializable{
-
- private static final long serialVersionUID = 1L;
-
- private Integer id;
- private String enName;
- private String cnName;
- private String abridge;
- private String value;
-
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getEnName() {
- return enName;
- }
- public void setEnName(String enName) {
- this.enName = enName;
- }
- public String getCnName() {
- return cnName;
- }
- public void setCnName(String cnName) {
- this.cnName = cnName;
- }
- public String getAbridge() {
- return abridge;
- }
- public void setAbridge(String abridge) {
- this.abridge = abridge;
- }
- public String getValue() {
- return value;
- }
- public void setValue(String value) {
- this.value = value;
- }
-
-
- }
第二步,分别建立mysql和Oracle的实体xml映射文件(也可以设置成不同配置文件映射同一映射文件)
mysql:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
-
- <hibernate-mapping>
- <class name="joyo.entity.Category" table="category">
- <id name="id" type="int" column="id">
- <generator class="assigned"/>
- </id>
- <property name="enName" type="string" column="enName"/>
- <property name="cnName" type="string" column="cnName"/>
- <property name="abridge" type="string" column="abridge"/>
- <property name="value" type="string" column="value"/>
- </class>
- </hibernate-mapping>
Oracle:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping>
- <class name="joyo.entity.Category" table="category">
- <id name="id" type="int" column="id" unsaved-value="null">
- <generator class="assigned" />
- </id>
- <property name="enName" type="string" column="enName" />
- <property name="cnName" type="string" column="cnName" />
- <property name="abridge" type="string" column="abridge" />
- <property name="value" type="string" column="value" />
- </class>
- </hibernate-mapping>
第三步:建立Mysql和Oracle配置xml文件(主要为数据库的配置信息)
Mysql:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
-
- <hibernate-configuration>
- <session-factory>
- <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
- <property name="connection.url">
- jdbc:mysql://127.0.0.1:3306/dms?useUnicode=true&characterEncoding=utf8
- </property>
- <property name="connection.username">root</property>
- <property name="connection.password">root</property>
-
- <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
- <property name="show_sql">true</property>
- <mapping resource="joyo/entity/Category.hbm.xml"></mapping>
- </session-factory>
- </hibernate-configuration>
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
-
- <hibernate-configuration>
- <session-factory>
- <!-- Database connection settings -->
- <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
- <property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:XE</property>
- <property name="connection.username">xiaojin</property>
- <property name="connection.password">xiaojin</property>
-
- <!-- SQL dialect -->
- <property name="dialect">org.hibernate.dialect.OracleDialect</property>
- <!-- 显示执行过的sql -->
- <property name="show_sql">true</property>
- <!-- 引入映射文件 -->
- <mapping resource="joyo/entity/CategoryOracle.hbm.xml"/>
- </session-factory>
- </hibernate-configuration>
在Mysql下创建数据表,并导入数据:
- create table category (
- id int(12) primary key ,
- enName varchar(30) ,
- cnName varchar(30) ,
- abridge varchar(30) ,
- value varchar(30)
- )ENGINE=InnoDB;
在Oracle下创建数据表:
create table category (
id number(12) primary key ,
enName varchar2(30) ,
cnName varchar2(30) ,
abridge varchar2(30) ,
value varchar2(30)
);(表结构要一致)
第五步:开始复制数据,创建单元测试类
- public class SessionMethod {
- private static SessionFactory MySQLFactory;
- private static SessionFactory OracleFactory;
-
- @BeforeClass
- public static void setUpBeforeClass(){
- //MYSQL
- try {
- Configuration config = new Configuration().configure("hibernate.cfg.xml");
- MySQLFactory = config.buildSessionFactory();
- } catch (HibernateException e1) {
-
- e1.printStackTrace();
- }
- //Oracle
- try {
- Configuration config2 = new Configuration().configure("hibernateOracle.cfg.xml");
- OracleFactory = config2.buildSessionFactory();
- } catch (HibernateException e) {
-
- e.printStackTrace();
- }
- }
- @Test
- public void replicate(){
- Session mysqlSession = MySQLFactory.openSession();
- String HQL = "FROM Category";
- Query query = mysqlSession.createQuery(HQL);
- List list = query.list();
-
- mysqlSession.close();
-
- Session oracleSession = OracleFactory.openSession();
- oracleSession.getTransaction().begin();
-
- for(Object o:list){
- if(o instanceof Category){
- Category c = (Category)o;
- oracleSession.replicate(c,ReplicationMode.LATEST_VERSION);
- // oracleSession.save( o );
- }
- }
- oracleSession.getTransaction().commit();
-
- oracleSession.close();
-
- }
- }