【IT168技术文档】
本篇是建立在前两篇即《入门知识篇》和《环境配置篇》基础之上的,本篇通过对MySQL数据库中test数据库中Users表的操作,这里主要是向表中增加记录,来展示如何在Eclipse中使用Hibernate.
准备工作:
在进行创建项目之前,先将《环境配置篇》中下载的Hibernate3.1构建到eclipse中来,将下载的Hibernate-3.1.3.zip解压.解压后目录为:

Hibernate3.jar这个文件复制到lib文件夹中,同时也将上篇中下载的MySQL Connector/J解压,解压后将其目录下的mysql-connector-java-5.0.3-bin.jar这个文件复制到lib文件中去。一会创建项目时要用到这个lib文件。
在eclipse中,通过”窗口—>首选项-Java—构建路径-用户库”。

然后单击“添加JAR”,将Hibernate-3.1.3.zip解压目录中的lib文件中所有的jar文件(当然包括上面复制到该文件夹中的Hibernate3.jar和mysql-connector-java-3.0.10-stable-bin.jar)添加进来。

这里的lib文件夹是上面提到的Hibernate-3.1.3.zip解压目录中的lib文件。
1. 创建项目
启动eclipse,,通过”文件->新建->项目”来建立Java项目,弹出如下图所示的对话框:

选择”Java项目”,点击”下一步”,给项目命名,这里命名为:HibernateDemo,同时将”创建单独的源文件夹和输出文件夹”选上,如下图:

【IT168技术文档】
点击”下一步”,选择”库”标签中的”添加库”


点击”完成”,从而完成对Java项目HibernateDemo的创建.
2. 建立可持久化类User.java
将刚建立的HibernateDemo项目展开

右键点击src,通过”新建—>类”来创建User.java

在User的类中添加三个变量:
通过点击工具栏上的”源代码—>生成Getter和Setter方法”,弹出对话框。package userdmin;
![]()
/**//*
* Copyright (c) 2006,Science and Technology Of NCEPU
* All rights reserved.
*
* FileName:User
* Description:description of the file
*
* Version:1.0
* Author:gmplayer
* FinishDate:2006.9.1
*
*/
![]()
public class User ...{
private int id;
private String username;
private String password;
![]()
}

【IT168技术文档】
点击“确定”,生成如下代码.
好了,这个类完成了。它是一个普通的Java对象(Plain Old Java Objects,就是POJOs,有时候也称作Plain Ordinary Java Objects),表示一个数据集合。下面建立一个Hbm文件将这个类映射到数据库的表格上。package userdmin;
![]()
/**//*
* Copyright (c) 2006,Science and Technology Of NCEPU
* All rights reserved.
*
* FileName:User
* Description:description of the file
*
* Version:1.0
* Author:gmplayer
* FinishDate:2006.9.1
*
*/
![]()
public class User ...{
private int id;
private String username;
private String password;
/**//**
* @return id
*/
public int getId() ...{
return id;
}
/**//**
* @param id 要设置的 id
*/
public void setId(int id) ...{
this.id = id;
}
/**//**
* @return password
*/
public String getPassword() ...{
return password;
}
/**//**
* @param password 要设置的 password
*/
public void setPassword(String password) ...{
this.password = password;
}
/**//**
* @return username
*/
public String getUsername() ...{
return username;
}
/**//**
* @param username 要设置的 username
*/
public void setUsername(String username) ...{
this.username = username;
}
![]()
}
3. 映射文件
右键点击HibernateDemo下的src文件,通过”新建—>文件”,来建立一个名为”User.hbm.xml”的文件,文件内容如下:
其中,代码中useradmin.User表示,类名为useradmin包下的User类,表为数据库中的Users表.<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.1.dtd">
<hibernate-mapping>
<class name="useradmin.User" table="Users"><!--把类和数表关联起来-->
<id name="id" unsaved-value="null"> <!--id的产生方式是assigned-->
<generator class="assigned" />
</id>
<property name="username" type="string" /><!--映射用户姓名-->
<property name="password" type="string" /><!--映射用户密码-->
</class>
</hibernate-mapping>
这个XML文件定义了对象属性映射到数据库表的关系,这里采用了assigned(程序设置)方式生成主键。
4. 配置文件
Hibernate可以使用XML或属性文件来进行配置,配置文件名默认为“hibernate.cfg.xml”, 在src目录下,新建一个hibernate.cfg.xml文件,与User.hbm.xml文件在同一目录下,内容如下:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.1.dtd">
<hibernate-configuration>
<session-factory >
<property name="show_sql">true</property><!--显示SQL语言-->
<property name="connection.driver_class"><!--指定连接MySQL的驱动-->
com.mysql.jdbc.Driver
</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=GBK
<!--连接数据库的URL,库名是schoolProject,”useUnicode=true&characterEncoding=GBK”
意思是采用中文编码--></property>
<property name="connection.username"> <!--连接的登录名-->
root
</property>
<property name="connection.password"><!--登录密码-->
root
</property>
<property name="dialect"> <!--指定连接的语言-->
org.hibernate.dialect.MySQLDialect
</property>
<mapping resource="User.hbm.xml" /><!--映射User这个资源-->
</session-factory>
</hibernate-configuration>
如果hibernate.cfg.xml文件和User.hbm.xml文件不在同一目录下,可以通过修改hibernate.cfg.xml文件中的<mapping resource="User.hbm.xml" />来映射User这个资源.如果User.hbm.xml这个文件在useradmin目录下, User.hbm.xml与hibernate.cfg.xml在同级目录下,<mapping resource="User.hbm.xml" />应改为<mapping resource="useradmin/User.hbm.xml" />
另外注意hibernate.cfg.xml文件和User.hbm.xml文件中的”http://hibernate.sourceforge.net/hibernate-mapping-3.1.dtd”,其中3.1要与hibernate的版本一致,我们使用的是hibernate3.1.
【IT168技术文档】
5. 测试程序
在useradmin包下新建一个Test类,即右键点击useradmin,通过”新建—>类”来建立一个Test类,同时将public static void main(String[] args)这个选项勾上。

Test类的代码如下:
这里简单说说一下流程,首先初始化Configuration,加载Hibernate的配置信息,然后Configuration取得SessionFactory对象,并由它来开启一个Session,它代表对象与表格的一次会话操作,而 Transaction则表示一组会话操作,我们只需要直接操作User对象,并进行Session与Transaction的相关操作, Hibernate就会自动完成对数据库的操作。package useradmin;
![]()
/**//*
* Copyright (c) 2006,Science and Technology Of NCEPU
* All rights reserved.
*
* FileName:filename
* Description:description of the file
*
* Version:1.0
* Author:gmplayer
* FinishDate:2006.9.1
*
*/
import org.hibernate.*;
import org.hibernate.cfg.*;
![]()
public class Test
...{
public static void main(String[] args) throws Exception ...{
![]()
try ...{
![]()
SessionFactory sf = new Configuration().configure().buildSessionFactory();
![]()
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
![]()
User user = new User();
user.setUsername("gmplayer");
user.setPassword("admin");
![]()
session.save(user);
tx.commit();
session.close();
![]()
} catch (HibernateException e) ...{
e.printStackTrace();
}
}
}
最后建立完所有的文件以后,文件的结构如图:

右键点击Test.java,选择”运行—>运行方式—>Java应用程序”.
控制台中最后一行输出为: Hibernate: insert into Users (username, password, id) values (?, ?, ?)表示运行成功.
同时查看数据库中的Users表,发现Users表中已经增加了一条记录,其中username为gmplayer,password为admin.
7. 小结
Hibernate原理方面网上有很多资料,比如Hibernate本身自带的中文文档、夏昕编写的《Hibernate开
发指南》,陈刚编写的《Eclipse插件开发指南》和蔡雪焘编写的《Hibernate开发及整合应用大全》等都是
非常不错的,现在关于Hibetnate的书籍也多了起来。
我所作的工作就是要使新手能尽快上手Hibernate,理论方面我不想过多纠缠,尽量以实例说话。我想
,与其凭空说一个技术多好多好,倒不如给我一个可以上手的实例操作一下。