在Hibernate工程中如何让数据库从MYSQL换成ORACLE

首先,本人用的Hibernate版本是3.6,MYSQL版本是5.6(其时这个无所谓,一般只要高于5.0即可),ORACLE版本是11g。
下面就通过几个步骤来说明下转换过程:
1、首先是根据自己的需求创建自己的数据库实例(当然也可以使用自带的ORCL实例,我是单独创建了MYORACLE实例),再创建自己的用户,并且指定权限(我创建的用户使用的是默认的表空间)。

  1. 创建MYORACLE实例并且指定空间大小(在这不列举详细步骤了)。
  2. 登录创建的实例,创建用户TESTOA,并且分配相应权限(更加详细配置在这里不一一介绍)。
//创建用户
create user testoa identified by 1234;.
//授予相应权限
grant create session to testoa ;
grant unlimited tablespace to testoa ;
grant create table,create view,create trigger, create sequence,create procedure to testoa ;
//解锁testoa用户
alter user testoa account unlock;

2、导入ORACLE新的Driver包文件(在我的资源分享中有,在官网下载的,是最新的,大家可以去下载)。

3、更改配置文件信息: 更改Hibernate配置文件信息

<!-- 数据库链接信息 -->
<!-- 这是起初我自己的MYSQL配置文件信息,如果自己已经改成Oracle,那么把它注释即可 -->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3307/testoa</property> 
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
<property name="hibernate.connection.username">root</property> <property 
        name="hibernate.connection.password">1234</property>
    <!-- ========配置Mysql数据库方言(配置文件)======== -->
    <property name="hibernate.dialect">
        org.hibernate.dialect.MySQL5InnoDBDialect
    </property>
    <!-- ==========配置Mysql数据库方言(配置文件)=========== -->


    <!-- =======链接Oracle数据库(配置文件)======= -->
<!-- 尤其注意这里的驱动映射文件不同于之前,新添加的Driver包是oojdbc6.jar,并且映射路径也不同于之前版本,下面会详细说道为什么使用这个版本驱动-->
    <property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property> 
    <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:MYORACLE</property> 
    <property name="hibernate.connection.username">TESTOA</property> <property 
    name="hibernate.connection.password">1234</property> 

<!-- Oracle方言,此处用的oracle 11g 那么用10g的方言就可以了,这个没有什么好纠结的 -->
    <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
    <!-- ====链接Oracle数据库==== -->

ok完成!

尤其注意驱动包的版本使用,在我的资源有已经下好的ojdbc6.jar。

在此下面就介绍下classes12.jar,ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的区别,之间的差异:(转载,整理)
首先在使用Oracle JDBC驱动时,有些问题你是不是通过替换不同版本的Oracle JDBC驱动来解决的?最常使用的ojdbc14.jar有多个版本,classes12.jar有多个版本你了解吗?
连接类型:
1、JDBC OCI: oci是oracle call interface的缩写,此驱动类似于传统的ODBC 驱动。因为它需要Oracle Call Interface and Net8,所以它需要在运行使用此驱动的JAVA程序的机器上安装客户端软件,其实主要是用到orcale客户端里以dll方式提供的oci和服务器配置。
2、JDBC Thin: thin是for thin client的意思,这种驱动一般用在运行在WEB浏览器中的JAVA程序。它不是通过OCI or Net8,而是通过Java sockets进行通信,是纯java实现的驱动,因此不需要在使用JDBC Thin的客户端机器上安装orcale客户端软件,所以有很好的移植性,通常用在web开发中。


随Oracle 8i发布的Oracle JDBC驱动8.1.7版本
classes111.zip 适用于JDK 1.1.x
classes12.zip 适用于JDK 1.2.x
只有zip文件,无jar文件。


随Oracle 9i发布的Oracle JDBC驱动9.2.0版本

classes111.jar 适用于JDK 1.1.x
classes12.jar 适用于JDK 1.2 and JDK 1.3 (我的项目环境JDK1.6,oracle 10g,windows,用了这个目前没发现问题)
ojdbc14.jar 适用于JDK 1.4
classes111.zip 适用于JDK 1.1.x
classes12.zip 适用于JDK 1.2.x
***_g.jar 只是用javac -g编译,生成所有调试信息,其它全一样

新特性:
1、Thin连接类型的驱动对BFILE,BLOB,CLOB 提供直接支持,以前通常是调用PL/SQL来实现。
2、支持JDBC 3.0 特性
3、ojdbc14.jar 支持JDK 1.4
4、ojdbc14.jar 支持保存点(Savepoint)
5、可以在不同的连接池中使用PreparedStatement,这是重要的性能提升
从此以后新的jar文件的命名采用 ojdbc.jar 格式 ,以前的jar文件名称不变


随Oracle 10.2发布的Oracle JDBC驱动10.2版本

classes12.jar 适用于JDK 1.2 and JDK 1.3.
ojdbc14.jar 适用于 JDK 1.4 and 5.0
***_g.jar 只是用javac -g编译,生成所有调试信息,其它全一样
特点:
1、全面支持JDK 1.5
2、支持JDBC 3.0


随Oracle 11.1发布的Oracle JDBC驱动11.1版本
ojdbc5.jar: 适用于jdk5
ojdbc6.jar: 适用于jdk6 (如果你使用jdk1.5,就不能使用这个驱动)
***_g.jar 只是用javac -g编译,生成所有调试信息,其它全一样

新特性:
1、ojdbc6.jar:支持JDK6,支持JDBC 4.0,新的java.sql.SQLXML类型没有被支持。
ojdbc5.jar:全面支持使用JDK5 和 JDBC 3.0 。
2、建议使用oracle.jdbc.OracleDriver类,不建议使用oracle.jdbc.driver.OracleDriver。从9.0.1开始的每个release都推荐使用oracle.jdbc。
3、j2se 1.2,1.3,1.4不再支持。11R1不再包括这些版本的jar和zip,如果仍然使用这些版本,可以继续使用10gR2的jdbc。
4、11gR1 Thin driver支持AES加密算法,SHA1 hash算法,RADIUS, KERBEROS,SSL认证机制.
5、支持ANYDATE和ANYTYPE类型。这两种类型自9i引入,11R1前,程序员只能通过PL/SQL操作。
6、高级队列支持。11R1提供了访问AQ的高性能接口。
7、支持数据库变更通知。
8、Thin和OCI的数据库启动和关闭。11R1提供了这样的方法来启动和关闭数据库。
9、新的工厂方法。Oracle JDBC 11R1 oracle.jdbc.OracleConnection提供了创建Oracle对象的工厂方法。
包括ARRAY, BFILE, DATE, INTERVALDS, NUMBER, STRUCT, TIME,TIMESTAMP,TIMESTAMP等。


总体讲新版本的JDBC驱动 性能强、很多bug被发现并已解决。
我遇到的,之前使用ojdbc14.jar(不记得哪个版本了)批量插入10万条,实际只插入了3万多条,其它的丢失了,换ojdbc6.jar后,一次commit批量插入100万条也OK了。

尽量使用和数据库版本一致的驱动,有bug时,换高版本的JDBC驱动试试 。

如果一个jdbc的jar包你不知道是那个版本的,可以解压这个jar包,再META-INF\MANIFEST.MF 文件中找”Oracle JDBC Driver version - 10.1.0.2.0”字样,就知道版本了

参考:http://www.cnblogs.com/wenlong/archive/2012/03/22/2415220.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值