hibernate连接oracle数据库.doc_第1页
hibernate连接oracle数据库.doc_第2页
hibernate连接oracle数据库.doc_第3页
hibernate连接oracle数据库.doc_第4页
hibernate连接oracle数据库.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、 Hibernate介绍 Hibernate是基于对象/关系映射(ORM,Object/Relational Mapping)的一个解决方案。ORM方案的思想是将对象模型表示的对象映射到关系型数据库中,或者反之。Hibernate目前是ORM思想在Java中最成功、最强大的实现。它于2001年的年末发布第一个版本,立即引起了广泛的注意。2003年6月,Hibernate2发表,并且获得Jolt大奖,进而被JBoss吸纳成为它的一个子项目。2005年3月,Hibernate 3发表,其中做了一些比较重大的改进。本文以Hibernate3为基础编写。 另外,Hibernate除了可以在J2EE容器中运行外,还可以运行在Java应用程序中。本文就是以Java应用程序为例来介绍它。二、配置开发环境 本文以一个Java应用程序(Java Application)为例,介绍如何使用Hibernate来进行数据库操作。 在进行Hibernate开发之前,需要首先获得Hibernate类库、相应数据库的JDBC驱动类库。Hibernate类库可以从中下载,目前的版本是3.0。而JDBC驱动可以根据不同的数据库来选择,在这个例子中,使用的是Oracle数据库,那么相应的JDBC驱动可以从Oracle安装目录ora92jdbc下获得。其他的数据库请根据相关的说明获得。 下载Hibernate包后,可以将它解压到一个文件夹,此处假设为C:hibernate-3.0,然后将C:hibernate-3.0下的hibernate.jar和C:hibernate-3.0lib下的那些第三方类库也放到环境变量CLASSPATH中。(通常,只需要dom4j、cglig、commons-logging、commons-collections、log4j、ehcache、asm、jta、antlr这些类库就可以了) 做完这些配置后,就可以在此基础上进行基于Hibernate的Java程序开发了。三、开发基于Hibernate的应用 现在假设我们在Oracle数据库中创建了一个表Student,它的字段如下表所示:字段 说明Student_ID 学员编号,整型,PK,自动增长Student_Name 学员姓名,字符串类型Student_Age 学员年龄,整型如果我们在Oracle中定义这个数据库表,我们可以定义一个创建数据库表的SQL脚本如下:create table Student(Student_ID number(6) NOT NULL PRIMARY KEY,Student_Name varchar2(10) NOT NULL,Student_Age number(2) NOT NULL); 另外,因为在Oracle中没有“自动增长”类型的字段,所以通常情况下我们需要定义一个sequence来作为自动增长类型字段的数据。在这里,我们也可以定义一个sequence来给Student_ID字段提供数据。创建sequence的SQL脚本如下:CREATE SEQUENCE student_sequenceINCREMENT BY 1START WITH 1000NOMAXVALUENOCYCLECACHE 10; 我们在这里创建了一个student_sequence,准备用来作为Student_ID字段的值。 接着,我们需要一个hibernate.cfg.xml或者属性文件perties来指定Hibernate所使用的数据库以及用户名、密码等其他相关的配置,我们在此使用xml文件,它的内容如下:源文件:hibernate.cfg.xml true org.hibernate.dialect.Oracle9Dialect oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:localhost:1521:nitpro system manager 做完前面的这些准备工作后,下面就让我们进入激动人心的Hibernate编程吧! 首先,我们需要定义一个用于表示“学生”对象的Student类:源文件:Student.javapublic class Student private int student_id; private String student_name; private int student_age; public int getStudent_id() return student_id; public String getStudent_name() return student_name; public int getStudent_age() return student_age; public void setStudent_id(int id) this.student_id = id; public void setStudent_name(String name) this.student_name = name; public void setStudent_age(int age) this.student_age = age; 这个类很简单,就是一个典型的JavaBean的定义:有三个属性:student_id、student_name和student_age,分别对应数据库表Student中的三个字段,并且在这个类中定义了对应各个属性的setter/getter方法。 接下来,我们需要给这个类定义一个XML映射文件“Student.hbm.xml”,文件内容如下:源文件:Student.hbm.xml student_sequence 注意,在这个xml文件中,我们首先使用class元素定义了我们定义的Java类和数据库表之间的关系,在这里,我们定义的Java类和数据库表名称都是Student,然后,我们使用id元素定义了主键名称、类型等,它有一个子元素generator来说明主键的产生方式,此处指定的是“native”,表示根据数据库来选择,比如,对于Oracle数据库,它会去寻找一个sequence(默认情况下,它会去寻找一个名为“hibernate_sequence”的sequence),我们可以用参数param来指定一个sequence。而property用来指定Student.java类中的属性和Student数据库表之间的对应关系,以及各个字段的数据类型。在这个例子中,我们指定的数据类型是Java语言中的数据类型(此时需要指定引用类型数据),我们也可以使用Hibernate中自定义的数据类型,限于篇幅,在本文中不一一讲解。 然后,我们需要在hibernate.cfg.xml中加入这个文件的映射,可以在之前加入下面的语句:最后,我们需要编写一个测试类来测试一下,能否通过Hibernate和前面我们定义的相关程序,完成对数据库的操作。我们编写一个测试类如下:源文件:Test.javaimport org.hibernate.*;import org.hibernate.cfg.*;public class Test public static void main(String args) try /通过Configuration获得一个SessionFactory对象SessionFactory sf= new Configuration().configure().buildSessionFactory(); /打开一个Session Session session = sf.openSession(); /开始一个事务 Transaction tx = session.beginTransaction(); /创建一个Student对象 Student stu = new Student(); /通过Student的setter方法改变它的属性 /注意student_id不用我们设置 stu.setStudent_name(zhangsan); stu.setStudent_age(18); /通过session的save()方法将Student对象保存到数据库中 session.save(stu); /提交事务 mit(); /关闭会话 session.close(); catch(Exception e) e.printStackTrace(); 编译并运行这个程序,如果前面的配置和程序都没有问题,应该可以正确的往数据库表Student中插入一条数据,并且在控制台上能够得到如下输出(只列出部分输出内容):Hibernate: select student_sequence.nextval from dualHibernate: insert into Stu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论