《Hibernate 笔记.doc》由会员分享,可在线阅读,更多相关《Hibernate 笔记.doc(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、优质文本4. Hibernate 介绍 Hibernate是一个JDO工具。它的工作原理是通过文件把值对象和数据库表之间建立起一个映射关系,这样,我们只需要通过操作这些值对象和Hibernate提供的一些根本类,就可以到达使用数据库的目的。例如,使用Hibernate的查询,可以直接返回包含某个值对象的列表List,而不必向传统的JDBC访问方式一样把结果集的数据逐个装载到一个值对象中,为我们的编码工作节省了大量的劳动。Hibernate提供的HQL是一种类SQL语言,它和EJBQL一样都是提供对象化的数据库查询方式,但HQL在功能和使用方式上都非常接近于标准的SQL。在早期的 Java 数据
2、库和网站开发中, 开发人员通过 java.sql 包里面的各式各样的类来操作数据库; 你甚至可以记起来自己当时怎么写的. 编写的方式根本上就是通过 DriverManager 获取 Driver, 创立 Connection, 使用 Connection, 正确处理异常, 关闭连接等等. 这种情况下常见问题包括忘记关闭数据库连接, 或者运行一段时间后出现了连接异常. 几年之后 连接池 成了个大话题因为它可以让开发人员不用再关心创立和管理(关闭)数据库连接, 这样可以集中精力于他们的 SQL 和 ResultSet 分析代码中. 这样, 我们几乎解决了长时间运行的应用程序里面的连接异常的问题.
3、然而, 还是经常能看到成百上千行的代码来生成一段查询数据的SQL 然后分析 ResultSet 来填充查询结果. 又是几年过去了, 某些人产生了一个想法: 自动将 ResultSet 里面的结果直接映射成 Java 对象, 这解决了大局部的像模版一样的重复多余的分析结果集的代码. 这时候 Java 数据库开发已经前进了好几步, 已经变得相对很容易了. 在这些根底之上, Hibernate 出现在我们的面前. Hibernate 带来的想法不仅仅是自动化这些过程, 而且在内存中管理对象的状态, 它来关心什么时候以及如何将对象值读取或者写入数据库. 突然的, 所有的开发人员都在完全使用对象(或者映
4、射的对象)并且让 Hibernate 来处理其它的事情. 开发人员完全不再需要编写 JDBC 和 SQL 代码(译者注: 这只是用对象方式设计数据库的新工程中才可以, OR 这个词限定了它的适用范围, 并不是什么工程都能用 Hibernate 的). 现在他们通过持久化框架的代码来代替过去所写的那些复杂的代码. 在 Hibernate 出现的时候, 其它的可用的持久化技术包括 EJB 2.x. Hibernate 的适时出现, 易用性, 以及大量开发人员的支持导致它很快在 Java 开发领域声名雀起. 在 这个教程中, 我们将会看一看如何使用 MyEclipse 开发 Hibernate 来简
5、化开发过程, 甚至比单独使用 Hibernate 更方便. 事实上, MyEclipse 通过在短短几秒内生成 Java 应用的持久层的代码, 不需要你来编写任何 Hibernate 映射或者配置文件. 我们通过创立一个简单的数据库开始, 稍后这个数据库将会被反向工程来生成到一个启用了 Hibernate 的工程中. 接下来, 我们将会编写一些简单的 Java 代码来使用 MyEclipse 所自动生成的 Hibernate 代码来存储, 读取以及更新数据库中的信息. 开始工作:工作环境:MyEclipse6.0; hibernate3.2; oracle9i;要在 MyEclipse 中开始
6、使用 Hibernate 和 Spring, 首先我们需要有一个数据库连接来供程序来使用. 我们来完成第一个hibernate程序。为以下表完成hibernate映射。在oracle数据库中创立一个person表。create table PERON( ID VARCHAR2(32) not null primary key, NAME VARCHAR2(20) not null, PASSWORD VARCHAR2(20) not null, SEX VARCHAR2(2), EMAIL VARCHAR2(30);这时数据库中的数据已经创立完毕。然后我们利用MyEclipse6.0就可以完成
7、我们的任务。一、 :安装jdk;二、 :在MyEclipse上创立hibernate在 MyEclipes 视图下新建工程l 翻开MyEclipse6.0开发界面,如图l 在菜单栏中,依次单击 New - Web Project 建立一个Web 工程。l 在该对话框的“Project Name 文本框内输入工程名称,这里的工程名称为“HOWebProject,其他文本框保持默认设置即可,如以下图所示。l 单击完成,完成新建工程的工作。 二 将数据库驱动包导入MyEclipes 中本例子主要应用 oracle9i 作为数据库驱动包,将其导入MyEclipes的具体步奏如下。l 找到oracle9
8、i 数据库驱动包所在的位置,一般为 X:oracleora92jdbclibclasses12.Zip 将12classes12.Zip拷贝到 lib文件夹内如图l 右单击 HOWebProject Build Path-Configure Build Pathl 进入到下面的对话框中。左边选择 JAVA Build Path,选择Libraries选项卡 ,然后选择 选中classes12.zip 单击OK。出现“奶瓶后单击完成。l 这时已经将 oracle9i 数据库驱动包导入MyEclipes中。如以下图所示。 三在hibernate视图模式下建立数据库连接l 在MyEclipes的主窗
9、口中,单击 按钮,将弹出选择视图快捷菜单,l 选择“MyEclipse Hibernate菜单项,进入Hibernate视图工作模式,在DB Brouser工作域中,单击鼠标右键弹出New快捷菜单,如下图l 单击后进入Database Driver 对话框在 中 :选择在中 : 自己任意起名字。在中 : jdbc:oracle:thin:localhost:1521:oradb蓝色位置:写Localhost是因为本机做为效劳器 红色位置: 因为效劳名sid是oradb,所以红色位置写sid在 中:写你在数据库中创立的用户的名字。在 中:写此用户对应的密码.在 中:参加数据库驱动文件。 选导入驱
10、动在 中:选 填好后如图。l 点击Next,将翻开选择数据库对话框。在该对话框中,选 Display the selected schemasl 单击 ,翻开数据库提示信息对话框,在 Enter your password 中重新输入密码。l 单击OK按钮,将翻开选择数据库对话框,l 选择你自己所创立的用户,单击ok.回到选择数据库对话框。l 单击完成,完成hibernate 视图下的建立数据库的连接工作。这时在DB browser 视图下显示如图。l 右单击 执行 l 出现Open Database Connection 对话框。输入用户密码 Ok。此时数据库中“pp1984用户的存储表全部
11、映射到其中。 四在J2EE Development视图模式下建立存放类的包文件夹l 切换到 MyEclipse Java Enterprise 视图下l 右键单击src 新建一个 包l 起一个包名字。我起的是com。fornBeanl 完成, 五将hibernate3.2类库构建到MyEclipse中l 在MyEclipse的菜单栏中,依次单击 WindowPreferences,翻开了对话框。在从中依次展开“Java-Build Path-User Libraries l 选New 翻开了“新建用户库对话框,输入hibernate3.2,确定。如以下图l 选中按 找到hibernate3.2
12、包后将导入,然后将lib包中所有的jar文件导入。l 导入 输入oracle数据库包 方法同上。l 确定后如下图。 六将Hibernate3.2类库引入到工程中l 右击工程名MyEclipes-l 出现以下图对话框,按照以下图进行配置。然后 Nextl 默认进行以下图 继续next;l 这时在 中 选择 前面的数据库连接l 出现以下图后,将Create SessionFactory class 选没步创立SessionFactory classl 完成从此hibernate 一起准备就此完成。下面我们进行开发一、 开发POJO类 只包含setter和getter方法的类 注意POJO类的名称最
13、好要及表名称一致。在com.fornBean包中创立Person类内容代码如下:package com.fornBean;/ POJO类public class Person private String id;private String name;private String password;private String sex;private String email;public String getId() return id;public void setId(String id) this.id = id;public String getName() return name;
14、public void setName(String name) this.name = name;public String getPassword() return password;public void setPassword(String password) this.password = password;public String getSex() return sex;public void setSex(String sex) this.sex = sex;public String getEmail() return email;public void setEmail(S
15、tring email) this.email = email; 七生成映射文件l 我们要对pp1984用户中的Person表进行操作,那么我们必须对它映射,右单击Person?hibernate Reverse Enginneering.l 选择包源l 单击 Browse 进入l 选中 com.fornBean 完成。l 按以下图进行配置。点击nextl 按以下图进行配置,单击完成。l 完成后如以下图所示在 com.fornBean 包内添加一个类 PersonOperate,它 是 具体操作hibernate 方法的。package com.fornBean;import org.hibe
16、rnate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;/具体操作 hibernate 的类public class PersonOperate private Session session=null;public PersonOperate()Configuration config=new Configuration().configure();SessionFactory factory=config
17、.buildSessionFactory();this.session=factory.openSession();public void insert(Person p)Transaction tran=this.session.beginTransaction();this.session.save(p);tran mit();在con.fornBean包中再做一个测试类主函数在里面TestPo package com.fornBean;public class TestPO /* * param args */public static void main(String args) / TODO Auto-generated method stubPerson p=new Person();p.setId(1);p.setName(pangziheng);p.setPassword(123);p.setSex(男);p.setEmail(skjdifdji);PersonOperate op=new PersonOperate();op.insert(p);l 最后运行Textpo类,完成插入数据31 / 31
限制150内