Hibernate入门之小例子(转载)

原创 2004年10月27日 15:03:00

 

作者:vatful

整理人:smallduzi

本机环境介绍:JB7.0, hibernate-2.0.3, Oracle8.1客户端

数据库:局域网内的服务器上的Oracle8.1, 服务器IP地址:x.x.x.x, 端口:1521

数据库名:OraHib

(请保证以上数据库信息已建好,并获得操作数据库的登录名和密码)

开始编程:

(1)用JB新建一个工程,如hiberante_demo2,

(2)为你的工程添加Required Libraries(Project->Project Properties->Paths->Required Libraries):添加hibernate-2.0.3目录中lib目录下的所有jar,添加hibernate-2.0.3根目录下hibernate2.jar,添加本地Oracle8.1目录中jdbc目录下的lib子目录中的classes12.zip(这里有连接数据库时需要的驱动oracle.jdbc.driver.OracleDriver)。

------------------------

2004.3.11 15:23 补充:

运行此程序时,有不少朋友碰到log4j报错的问题,建议大家留心classpath中是否有log4j的包,

如果有这个包

#可以在classpath中把它删除

#也可以本例子第四步做完后复制log4j的prop文件(路径是:hibernate目录/src/log4j.properties)到工程的classes子目录下。

感谢maxpain,zxyfd2000提出这个问题。

------------------------

(3)新建一个Class,包是person,类名是PersonModel,它有三个成员变量分别是id,name,address(对应于数据库表中的三个字段。咦,表还没有阿!没关系,后边的程序会利用hibernate自动生成表,不需要自己再去操作数据库建表,真是太省事了, :D ),类中还需要三个成员变量的get,set方法,代码结果如下:


这样person.PersonModel这个类的工作就完了,我也休息一下。

上边做好了person.PersonModel类,我请各位看官注意一点,不是说可以自动生成表吗?是啊!那岂不是表中字段想怎么定义就怎么定义了啊?Yeah,完全正确。是不是觉得很自由啊!

俺这个测试,主要是想对表进行插入和查询操作,并且这个表只有一个主键(这里就是id)!还有,后边还要写配置文件 Person Model.hbm.xml (名称格式就是类名.hbm.xml,和类中内容完全对应,设置与数据库表之间的联系),因为这个测试中写的PersonModel.hbm.xml 非常简单,主键是用oracle数据库自动生成的,是整型的数据,写类时这个id我定义为long型了。你如果想用其他类型的主键,看看其他的文章吧。

(4)编译person.PersonModel类,然后把hibernate-2.0.3目录中src子目录下的hibernate.properties文件拷贝到hiberante_demo2这个工程目录中的classes子目录下。

(5)修改hibernate.properties中的数据源连接,在文件中找到如下所示的HypersonicSQL数据源连接的位置,这是默认的数据源连接。


六行中第五行已经注释掉了,现在把其他五行也注释掉。

结果如下


再找到


这是Oracle数据源连接

去掉注释,修改为


oracle.jdbc.driver.OracleDriver,因为这个类,所以开始要把class12.zip加进来。下边很好懂,数据库的登录名,密码,x.x.x.x 为数据库所在服务器的ip地址,1521是端口,OraHib是数据库名。

(6)在PersonModel.class所在的目录中新建PersonModel.hbm.xml,其内容如下:


简单解释

<class name="person.PersonModel" table="ZY_PERSON">

Person Model这个类对应数据库中ZY_PERSON这个表(现在还没有,后边自动生成)


name="id" 这是类中的id,这里定义它为主键用<id></id>标记,类型为long型,主键用class="sequence"这种形式生成(这适合oracle数据库),ZY_PERSON_ID_SEQ是在oracle数据库中对应的sequence的名称(这个sequence,程序也将自动产生)。

<property name="name"/>

<property name="address"/>

另外的两个成员变量。

以上是非常简单的配置方式,数据库中的ZY_PERSON将有三个字段,名字与类中的一样,name, address 都将是String型。数据库中字段可以和类中的名称不一样,请参考其他的文章。

配置都完成了,剩下的工作就是编写测试代码测试hibernate了。

再休息一会儿。

(7)最后一步了, :wink:

在hiberante_demo2工程根目录下新建一个sql_out_lib文件夹。

在JB中新建一个类,包是person,类名TestPersonModel,输入代码,结果如下:


我们已新建了sql_out_lib目录,这里通过SchemaExport 设置一个附加的输出文件,把hibernate生成的sql语句输出一份到sql.txt(这个文件名可随便定义),然后执行create操作。这时候数据库中就建好了ZY_PERSON表和ZY_PERSON_ID_SEQ。

在JB中再新建一个类,包是person,类名TestPersonModel2,输入代码,结果如下:


这跟用jdbc连数据库一样,Session 相当于connection,Transaction 是事务处理,PersonModel p1不需设id,数据库自动生成。

在JB中再新建一个类,包是person,类名TestPersonModel3,输入代码,结果如下:


注意查询语句的写法,查PersonModel类(就是查ZY_PERSON表),起个别名叫小p,where语句查小p的id等于1;q.list()返回List类,再用get(int)

方法get(0)取第一个结果,我们的查询结果出来了。

初学hibernate不得不提的可能碰到的几个问题

(1)*.hbm.xml文件中主键的定义不要弄错了,要选择合适的主键生成方式,错用过<generator class="identity"/>。

(2)自己写例子时,也从网上拷贝代码下来。class编译无法通过,运行时xml文件中有无法识别的字符,都可能是因为拷贝的代码中有看不见的不合格式的字符,如果有问题仔细检查一下。

(3) :idea: 最大的一个错误,开始做测试时,creat语句,插入语句都执行成功,可是查询语句如何也成功不了,郁闷了好几天,后来还有其他兄弟也遇到同样问题,还问我这个菜鸟,我如之奈何?我要rapidSQL访问数据库creat语句,插入语句,查询语句都可以,说明数据库那边没有任何问题,这边creat语句,插入语句都可以,说明代码没问题,单单一个查询语句出怪子。实在没辙,问了一些高手也没有答复,于是放下了。一次偶然的机会,让我碰到oracle.jdbc.driver.OracleDriver的版本问题,于是想到这儿,原来第一次连接的数据库是Oracle9,版本太高了。

仅以此鉴与大家共享。

第一个简单的hibernate小例子

一直在用mybatis.因为要写很多表的联合查询语句。 听很多人说起hibernate。说是封装的如何好之类。 于是想学习一下。 网上搜的例子在我这各种报错:log4j的,Configuring eh...
  • sunwei3301
  • sunwei3301
  • 2015年06月24日 16:54
  • 1027

菜鸟学习Hibernate——简单的一个例子

一、Hibernate开发。 上篇博客已经为大家介绍了持久层框架的发展流程,持久层框架的种类。 为了能够使用Hibernate快速上手,我们先讲解一个简单的Hibernate应用实例hiberna...
  • gwblue
  • gwblue
  • 2014年04月18日 14:56
  • 9329

Eclipse Hibernate 入门小程序

Eclipse Hibernate 入门小程序Hibernate是一个开放源代码的对象关系映射(ORM,最后会有简介)框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用...
  • jd7082210
  • jd7082210
  • 2015年09月10日 16:02
  • 968

【HIbernate】hibernate 最简单的例子

做一个最简单的hibernate的例子 可以保存数据环境:      Myeclipse 6.5, hibernate3.2 1 先倒入数据驱动包和hibernate核心包 还有 要用到的相关包   ...
  • myloveyoyo1314
  • myloveyoyo1314
  • 2010年01月09日 21:00
  • 3860

MVC基础入门——最基础小例子

Mvc在学习《Headfirst》的时候,就接触过了。对于这个庞大的模式。非常的感兴趣。Mvc就是设计模式的升华。 在没有接触过Mvc的时候,一直都是在使用的三层架构,使用的UBD三层来做项目。对于这...
  • zc474235918
  • zc474235918
  • 2014年11月23日 23:24
  • 2347

Hibernate 入门第四课 第一个小例子

首先我是使用hibernate tools工具辅助创建的,不知道怎么安装的请参考我之前的博客: 选中文件src右键 new->other 入门课程按照默认的一直next就行了...
  • wei_chong_chong
  • wei_chong_chong
  • 2016年11月10日 09:45
  • 601

编写第一个Hibernate例子思路

1.创建Hibernate的配置文件 2.创建持久化类 3.创建ORM(对象关系映射)文件 4.通过Hibernate API 编写访问数据库的代码...
  • hz0319
  • hz0319
  • 2016年07月04日 13:55
  • 59

新手上路之Hibernate:第一个Hibernate例子

一、Hibernate概述 (一)什么是Hibernate? Hibernate核心内容是ORM(关系对象模型)。可以将对象自动的生成数据库中的信息,使得开发更加的面向对象。这样作为程序员就可以使用面...
  • aboy123
  • aboy123
  • 2013年08月21日 19:33
  • 96295

js基础小例子

DOCTYPE html> html> head> meta charset="UTF-8"> title>title> head> body> input type...
  • Vivian_shuang
  • Vivian_shuang
  • 2016年07月12日 08:20
  • 254

opencv入门例子

1、 第一个例子-------显示图像 从磁盘中加载并在屏幕上显示一幅图像的简单OpenCV程序 [cpp] view plain copy #inclu...
  • xiewenhao12
  • xiewenhao12
  • 2017年07月04日 15:43
  • 245
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hibernate入门之小例子(转载)
举报原因:
原因补充:

(最多只允许输入30个字)