Hibernate + Oracle 结合

以前都是通过Hibernate + MySQL 来实现数据库查询与修改的,因为 mysql 数据库 较oracle数据库简单些,最近在看Oracle的书籍,今下午尝试了下Hibernate 框架下操作Oracle数据库:

1.新建 WEB Project 项目 “OracleTest”;

2.导入Hibernate 框架;

3. 在MyEclipse 中 创建 Oracle 某个数据库的连接

(Windos -- Show View -- DB Browser )调出 DB Browser 功能;

空白处,右键,单击 “New” ,开始新建 连接项

给连接项 起一个好记且有意义的名字,例如:oracle_hello (连接 oracle 的 hello 数据库)

选择 Oracle (OCI Driver)或者 Oracle (Thin Driver)均可,(OCI 需要本地安装Oracle 客户端,所以一般用Thin Driver即可);

按照模板填好 Connection URL ,例如:jdbc:oracle:[email protected]:1521:hello;

填好 User name ,这里为 system;

填好 Pasword ;

然后点击“Add JARs” 选择好本地的 Oracle 的jdbc 的驱动包;

Driver classname 选择 “oracle.jdbc.driver.OracleDriver”;

填好上述信息后,单击“Test Driver” 测试一下所填信息是否正确,如果正确,一切OK;否则,仔细看看上述信息有没有错误;

4. 建好连接项后,可以打开连接项,选择好要导入的表,然后右键,点击“Hibernate Reverse Engineering” 即可将映射信息导入到项目中

(选择 Id Generator 时 ,一般选择 assigned,想要自动增长而不用专门去数据库查询,可以选择increment选项);

通过java访问数据库,查询并保存信息;

有一点需要特别注意,虽然Hibernate 框架可以自动生成映射文件和数据库连接文件,但是由于Oracle的特殊性,Hiberntate生成的实体类文件中的字段的类型不一定合适:

例如:笔者数据库里的id字段是NUMBER类型,Hibernate会自动映射成BigDecimal,BigDecimal类型的数据不能像int类型那样简单进行+-*/,而是需要调用特殊方法才可以,所有笔者将实体类文件里的BigDecimal 类型改成了 int 类型,注意将getter 和 setter 方法中的BigDecimal 也改成int,特别注意:将实体与表映射文件中的BigDecimal也改成int 类型;

做好上述工作后,就可以调用Dao文件里的方法访问数据库了

(MyEclipse 2014 prefessional 版本中的Hibernate框架自动生成的Dao 文件里的 save 和 delete 方法需要添加事务处理功能,否则无效,如下图所示)

5.做完上述工作后,就可以新建测试类,进行测试了,完美:

时间: 2024-12-30 13:32:28

Hibernate + Oracle 结合的相关文章

HIbernate Oracle存储过程

之前为了实现基于Hibernate+Oracle的存储过程调用,发现了一个又一个坑,然后一个一个的尝试解决. 需求:使用Hibernate调用Oracle的存储过程,需要支持的有动态表名.存储过程变量定义.数组传递 1. oracle变量定义 首先,需要解决的是如何在oracle存储过程中定义变量,否则连存储过程都没法写 变量赋值 在AS…BEGIN中间插入要定义的变量foo 使用select into foo语法 -- http://stackoverflow.com/questions/16

表或视图不存在 Hibernate Oracle

曾经运行一个别人写的程序,之前连的别人的机器的数据,后来我把数据导入到本地数据库中运行,出错,如下:Hibernate: select sum(rdb_alert_0_.EVENT_COUNT) as col_0_0_ from ASICDB.RDB_ALERT_SECURITY_VIEW rdb_alert_0_– SQL Error: 942, SQLState: 42000– ORA-00942: 表或视图不存在 把该SQL语句在PLSQL Develop中运行也出错,把上述语句中的"AS

Hibernate + Oracle 创建自增序列ID

1.创建自增序列 2.对ID创建触发器 3.Userinfo.hbm.xml使得<generator class="increment"> 序列: CREATE SEQUENCE "SYSTEM"."SEQUENCE_ID" MINVALUE 1 MAXVALUE 99999999999 INCREMENT BY 1 START WITH 61 CACHE 20 ORDER NOCYCLE ; 触发器: create or repla

Hibernate oracle子查询

实体类 图书编号,名称,出版社,价格 查询图书的价格大于图书的平均价格的图书信息 多表联查 原文地址:https://www.cnblogs.com/ztca/p/8194240.html

oracle 存储过程 ,触发器练习

/*以下代码是对emp表进行显示宽度设置 */col empno for 9999;col ename for a10;col job for a10;col mgr for 9999;col hiredate for a12;col sal for 9999;col comm for 9999;col deptno for 99;col tname for a12;set pagesize 50; //----------------------------------------------

Hibernate4.x之Session--常用方法

接上篇文章继续学习Hibernate的Session(http://www.cnblogs.com/dreamfree/p/4111777.html) 持久化对象的状态; 站在持久化的角度,Hibernate把对象分为4种状态:持久化状态.临时状态.游离状态.删除状态. Session的特定方法能使对象从一个状态转换到另一个状态. 临时对象(Transient): 在使用代理主键的情况下,OID通常为null 不处于Session的缓存中 在数据库中没有对应的记录 持久化对象(也叫“托管”)(P

网站需求说明书

1.1. 项目背景 打造行业网站垂直专业门户网站. 1.2. 系统目标 建立易用.简单.稳定.功能强大的后台管理系统.并保证在网站后台能实现对栏目.文章.会员.专题.个性化模板的管理. 完成一套简洁实用.功能完善的前台系统,包括友好的用户界面.人性化的功能设计.完善的用户体验等. 1.3. 设计原则 本项目所开发的LMS平台在需求分析和开发中应遵循以下原则: 简单:易用性强:各功能模块符合业务逻辑,且划分清晰:平台易维护:能够基于本平台方便的进行二次开发. 稳定:在目标用户数量下能够稳定运行.

Hibernate4.x之Session

Hibernate Session概述 Session接口是Hibernate向应用程序提供的操纵数据库的最主要的接口,它提供了基本的保存.更新.删除和加载Java对象的方法. Session具有一个缓存,位于缓存中的对象称为持久化对象,它和数据库中的相关记录对应.Session能够在某些时间点,按照缓存中对象的变化来执行相关的SQL语句,来同步更新数据库,这一过程被称为刷新缓存(flush). 站在持久化的角度,Hibernate把对象分为4种状态:持久化状态.临时状态.游离状态.删除状态.S

ORA-28040: No matching authentication protocol

使用hibernate+oracle数据库时报错,错误例如以下: 121 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.3.1.GA 147 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found 162 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name