MyEclipse Hibernate 快速入门 中文版
翻译: 刘长炯(beasoft@126.com)
Blog: http://www.blogjava.net/beansoft/
可自由传播, 未经作者许可不得用于商业用途(如付费培训等).
注: 此文档原文(英文)位于 MyEclipse 安装后的帮助文档中.
最后修改: 十月 7, 2009
提纲
- 前言
- 准备工作
- 介绍
- Hibernate 一览
- 创建 HibernateDemo 项目
- 使用 HQL 编辑器
- 测试 HibernateDemo 应用
- 使用示例 HibernateDemo 项目
- 总结
- 用户反馈
- 资源
1. 前言
本文档基于以下环境编写: Sun JDK 1.5, Eclipse 3.2 和 MyEclipse 5.0. 所有的截屏基于 Eclipse, MyEclipse Enterprise Workbench, 和 Windows XP 的默认用户界面设置. 如果你对本文档的介绍有阅读上的困难, 请阅读 用户反馈 部分来了解如何向 MyEclipse 文档团队提交反馈.
2. 准备工作
下面是这个快速入门的准备工作列表:
-
Java 2 SDK, Standard Edition 1.4 或者更高版本(参考 资源 来了解下载地址)
-
Eclipse 3.2 SDK (参考 资源 来了解下载地址)
-
MyEclipse 5.0 (参考 资源 来了解下载地址)
-
选择以下可以被 Hibernate 和 MyEclipse Database Explorer 所支持的数据库服务器列表中的一个:
Axion
Hypersonic DB
InstantDB
Interclient
Firebird
ODBC Bridge
jTDS
Mckoi
Microsoft SQL Server
Mimer SQL
MySQL
Oracle
Pointbase
PostgresQL
SAPDB
Sunopsis XML
Sybase
ThinkSQL
3. 介绍
这个快速入门展示了使用 MyEclipse Enterprise Workbench 开发 Hibernate 的基本功能, 概念和技术. 我们将全程带领你来开发一个非常简单的 Java Hibernate 应用. 对于这个教程没有包含到的问题和概念, 我们推荐你去参考 资源 部分列出的 Hibernate 资源.
这个文档展示了如何进行下列工作:
-
为 Java 项目添加 MyEclipse Hibernate 支持
-
在项目中创建 Hibernate 配置文件
-
如何使用自定义的 Session Factory
-
从 Database Explorer 的表定义中生成 Java 类和 Hibernate 数据库映射文件 (.hbm)
- 使用 HQL 编辑器
-
创建使用 Hibernate 的小测试应用
注意: 在使用本教程时建议您事先阅读了 Database Explorer 快速入门 这个教程来了解如何创建连接和元数据功能.
4. Hibernate 一览
Hibernate 是一个非常流行的开源的易于配置和运行的基于 Java 的对象-关系映射(JORM) 引擎. 它提供了很丰富的功能包括:
-
多种映射策略
-
可迁移的持久化
-
单个对象映射到多个表
-
支持集合
-
多态关联
-
可自定义的 SQL 查询
Hibernate 使用 Java 编写, 是高可配置的软件包, 可以通过两种配置文件格式来进行配置. 第一种配置文件名字为 hibernate.cfg.xml. 在启动时, Hibernate 查询这个 XML 里面的属性来进行操作, 例如数据库连接字符串和密码, 数据库方言(database dialect), 以及映射文件位置等. Hibernate 在类路径中查找这个文件. 第二种配置文件是映射描述文件(文件扩展名为 *.hbm), 它来指示 Hibernate 如何来将特定的 Java 类和一个或者多个数据库表格中的数据进行映射. MyEclipse 提供了工具来处理这两种配置文件, 并且可以将它们和你对数据库和 Hibernate 映射的 Java 类的修改进行同步.
Hibernate 可以用在任何需要将 Java 对象和数据库表格中的数据进行移动的 Java 应用中. 因此, 它在开发两层和三层的 J2EE 应用中很有用. 向你的应用中集成 Hibernate 包括:
-
向你的项目中安装 Hibernate 核心类和依赖的 JAR 类库
-
创建 hibernate.cfg.xml 文件来描述如何访问你的数据库
-
为每个持久化 Java 类创建单独的映射描述文件
更多关于 Hibernate 的基本和高级特性, 或者如何使用 Hibernate 进行开发, 请查看页面下方的 资源 部分.
5. 创建 HibernateDemo 项目
这一部分描述了创建名为 HibernateDemo 的简单的 Java 项目的过程, 这个项目使用 Hibernate 来保存文本消息到一个单独的数据库表格中. 因为多数企业的网络应用都是和企业关系数据库中的数据进行交互, 我们将集中精力到编写 Java 数据对象和映射文件到现有的数据库.
我们需要映射到 Java 类的这个数据库表格列在下面. 为了方便测试, 我们已经向数据库中添加了很多测试数据.
echo_message DDL
CREATE TABLE echo_message
(
id integer PRIMARY KEY not null,
msg VARCHAR(255)
);
insert into echo_message values(1, 'hello world');
insert into echo_message values(2, 'goodbye world');
一般的在你进行 Hibernate 开发之前你需要一个能够访问的 Database Explorer 连接配置. 在这个教程中, 我们使用 Oracle 数据库连接配置, 这个配置在 Database Explorer 快速入门 教程中创建.
注意: 尽管这个快速入门使用了 Oracle, 但是这些步骤和上面的表格基本上是通用的, 可以在任何数据库下工作.
返回页首
5.1 创建 HibernateDemo Java Project
我们先来创建一个普通的名为 HibernateDemo 的 Java 项目, 这个项目读取写入数据到 echo_message 数据库表.
- 从 MyEclipse 菜单栏选择 File > New > Project > Java Project. 接着会打开 New Java Project 向导.
- 输入 HibernateDemo 到 Project name
- 在 Project Layout 下选中 Create separate source and output folders 单选钮.
- 选择 Finish 来完成这个页面, 如图 1 所示
图 1. 新建 HibernateDemo 项目
5.2 添加 Hibernate Capabilities 到 HibernateDemo 项目
现在 HibernateDemo 项目已经创建, 我们将添加 MyEclipse Hibernate 功能到这个项目. 这个基于向导的处理过程执行了下面的操作:
- 添加 Hibernate 类库 (JARs) 到项目的类路径.
- 在项目中创建并配置 hibernate.cfg.xml
- 在项目中创建自定义的 Session Factory 类来简化 Hibernate 会话处理
我们通过打开 MyEclipse Add Hibernate Capabilities 向导来开始:
- 在 Package Explorer 中选择 HibernateDemo 项目
- 接下来, 从 MyEclipse 菜单栏选择 MyEclipse > Add Hibernate Capabilities ... 来启动向导 (参考图 2).
图 2. 启动 "Hibernate Support" 向导
图 3. 添加 Hibernate 支持到 Java 项目 - 保持 Hibernate 3.1 specification 选中不变.
- 选择你需要的类库集合, 在这个示例中 Core 类库足够了.
- 保持 Add checked Libraries to project build-path 选中.
- 选择 Next.
表-1. Hibernate Support 向导 - 第1页选项
选项
描述Hibernate Specification
要添加到项目中的 Hibernate 版本支持功能. 为了最大限度的使用 MyEclipse Hibernate 工具, 推荐 Hibernate 3.1.
MyEclipse/User Libraries
可以添加到你的项目的构造路径的类库集合.
Add checked Libraries to project build-path
选中的类库将会添加到你的项目的构造路径中, 但是相应的 JAR 文件将 不会 复制到你的项目中. 这些 JAR 文件 将会 在发布程序时复制, 这是推荐的设置方式.
Copy checked Library Jars to project folder and add to build-path
选中的类库 JAR 文件将会被复制到你的项目并添加到构造路径中去.
Library Folder
仅在上面的选项选中时可用.
一个相对于项目的路径, 可以新建或者使用现有目录, Hibernate 类库将会被向导复制到这里.
- 第 2 页 允许你自定义配置文件的名字和路径.
- 保持 New 选中.
- 完成图 4 中显示的页面然后选择 Next.
图 5. Hibernate 数据库配置 - 保持 Specify datasource connection details? 选中.
- 选中 Oracle 配置, 这个配置在 Database Explorer 快速入门 设置过, 通过 DB Profile 下拉框选择. 这将自动填充当前页面中的所有输入框.
注意: 在这里数据库配置并非必须的; 你可以手工输入所有需要的信息, 不需要选择一个配置.
在这种情况下, 你必须确保在向导完成后手工复制 JDBC 驱动 JAR 文件到你的项目中. - 选择 Next.
上面进行的数据源配置操作可以现在跳过, 可以在随后的 Hibernate Configuration 编辑器 中进修改.
项目的最后一步是配置一个 SessionFactory 类, 这个类将会访问 Hibernate 功能所生成的基础代码. 本向导的截屏如图 6 所示.
图 6. 创建 SessionFactory 详细信息表 3 - Hibernate Support 向导 - 第 3 页选项
选项
描述Create SessionFactory Class?
如果启用, 向导将会创建一个 Hibernate 会话工厂的新类.
Java source folder
决定新类将被创建到的源代码目录.
Java package
指定 Session 工厂将被创建到的包名.
Class name
指定 Session 工厂类的名字.
Java Compliance Level
生成的 Session 工厂类的 Java 编译器等级.
- 选中 Create SessionFactory class.
- 选中包输入框右侧的 New 按钮然后创建包 com.genuitec.hibernate .
- 给 Session Factory 类 输入一个名字, 我们使用默认推荐的 HibernateSessionFactory.
- 完成如图 6 所示的页面, 然后选择 Finish.
注意: Session Factory 也可以在稍后创建, 通过 Session Factory 向导来完成 (File > New > Other MyEclipse > Hibernate > Hibernate Session Factory).
如果你在第一页选中了复制类库到你的项目中, 在向导完成之后的至多 30 秒内可能失去反应, 因为它将复制类库并更新多种项目资源. 请耐心等待并在进行其它操作之前等待过程的结束.
图 4. Hibernate 配置文件设置
这个向导结束后将进行下列操作:
- 如果在第一页选择了复制类库到你的项目, 将安装 Hibernate 类库 (JARs) 到项目中
- 更新项目的构造路径来包含已安装的 Hibernate 类库
- 给项目创建并配置 hibernate.cfg.xml 文件
- 为你的项目创建一个自定义的 SessionFactory 类 (例如 HibernateSessionFactory) 来简化 Hibernate 会话会话处理
图 7 高亮显示了新创建的 HibernateSessionFactory.java 文件里面的重要功能. 这个类管理了一个单独的 Hibernate Session 对象, 通过 getSession() 方法进行延迟加载并且在调用 closeSession() 方法之后刷新并释放数据. 在运行的时候, Hibernate 会话创建过程必须要能够访问类路径里面的 hibernate.cfg.xml 文件. 变量 CONFIG_FILE_LOCATION 定义了文件 hibernate.cfg.xml 相对于包的路径. 默认值通过 Hibernate 支持向导来提供. 如果你改动了 hibernate.cfg.xml 文件的位置, 你必须手工修改 CONFIG_FILE_LOCATION 的值来引用到新的文件的位置或者可以通过在使用之前调用 setConfigFile() 方法来设置为新的路径.
图 7. HibernateSessionFactory 类
5.3 自定义 Hibernate 配置文件
完成了 5.2 部分的配置向导后, Hibernate 配置文件将会自动打开.
如果你在添加功能过程中跳过了数据源连接的配置, 你可以现在来完成它, 也可以跳转到 添加属性.
自定义配置文件里面的需要连接到我们的数据库的信息.
- 选中 Use JDBC Driver 选项.
我们将指定 Database Explorer 中的 JDBC 驱动. 如果你尚未配置 JDBC 驱动, 请阅读 Database Explorer 快速入门 然后在进行下面的操作之前配置一个. - 从 Connection Profile 下拉框中选中一个配置.
如果你只是配置了 JDBC 驱动但是没有配置一个连接属性, 你可以选择 New Profile 按钮来创建一个新的连接配置. 如果你已经有了一个连接配置, 当你选择其中的一个之后将会自动填充下面的 4 个输入框中的内. - 点击 Copy JDBC Driver and add to classpath... 链接.
- 为你的数据库选中正确的 Hibernate Dialect.
图 8. Hibernate 配置文件, 配置了 Oracle 连接
你可以使用 Properties 部分来添加和修改属性.
图 9. 添加属性
Mappings 部分可以让你添加也许已经存在项目中的映射文件. 另外, 从 Package Explorer 拖放 映射文件到这个输入框也可以达到同样的效果.
图 11 上述操作完成后的 Hibernate 配置文件的源代码.
图 10. 添加映射文件
图 11. Hibernate 配置文件
5.4 创建 Hibernate Java 表映射
这个部分展示了使用 MyEclipse Hibernate 工具来反向工程生成 Java 数据对象并从现有的数据库表格生成映射的过程.
-
打开 MyEclipse Hibernate 透视图. 从主菜单栏, 选中 Window > Open Perspective > Other > MyEclipse Hibernate
-
选中你在 Hibernae 配置中所使用的数据库连接属性
-
浏览数据库的目录结构, 直到你找到了一个想要创建 Hibernate 映射的表格/实体
注意: 在我们的例子里我们使用了 TEST 数据库下的 ECHO_MESSAGE 表格; 对于其它数据库和表格的操作过程基本上都是一样的. -
右键点击表格然后选中 Hibernate Reverse Engineering, 如图 12 所示. 这将启动 Hibernate Reverse Engineering 向导.
另外, 你也可以从 DB Browser 那里拖动表格, 然后将它放到 Hibernate 配置编辑器里也可以启动这个向导.
注意: 你可以在 DB Browser 中选中多个表格然后同时对它们进行反向工程.
图 12. 对 ECHO_MESSAGE 数据库表格启动 Hibernate Reverse Engineering 向导
Hibernate Reverse Engineering 向导一共有 3 页.
图 13. Hibernate Reverse Engineering 向导 - 页面 1
- 点击Java src folder 右侧的 Browse... 按钮来查看可用的 Hibernate 项目以及源码目录, 这些目录将用来存放最终生成的文件.
选择 HibernateDemo 项目中的 src 文件夹. - 点击 Java package 输入框右侧的 Browse... 按钮然后选中包 com.genuitec.hibernate
- 完成如图 13 所示的向导中的其余的内容然后选择 Next.
注意: 向导的第 2 页和第 3 页用来自定义反向工程处理过程.
当然也可以现在就直接点击 Finish 按钮开始处理过程, 不对后两页的设置进行任何自定义.
表 4 - Hibernate Reverse Engineering 向导 - 第 1 页选项
描述Java src folder
选中映射文件, POJO 和 DAO 生成后所在的项目和源码文件夹.
Java package
映射文件, POJO 和 DAO 生成后所在的包.
Hibernate mapping file
从选中的表格生成映射文件.
Update hibernate configuration
将生成后的映射文件添加到 Hibernate 配置文件中.
Java Data Object
为映射文件和表格生成对应的数据对象 (POJO).
Create abstract class
为每个数据对象生成一个抽象的父类. 这个抽象类将在以后的重新生成过程中覆盖掉, 但是对应的子类将不会被覆盖掉.
Base persistence class
如果需要的话, 输入生成的 POJO 所要集成的父类的完整名称.
Java Data Access Object
生成便于访问映射后的类和表格的数据访问对象. 用户可以在 Basic, Spring 和 JNDI DAO 中选择一种.
Generate precise findBy methods
为映射类中的每个属性生成一个 "findBy" 方法.
例如 findByFirstName("name");Use custom templates
覆盖 MyEclipse 的内部 velocity 模版为你自己的版本.
参考 使用模版来更好的调节生成的代码 来获取更多信息.Template directory
包含了自定义模版的目录树的根节点.
图 14. Hibernate Reverse Engineering 向导 - 第 2 页 - 第 2 页可以使用默认的设置, 选择 Next.
表 5 - Hibernate Reverse Engineering 向导 - 第 2 页选项
描述Rev-eng settings file
这个文件包含了反向工程的配置和选项以供以后使用. 点击 Setup... 按钮来选择现有的文件或者创建一个新的文件.
如果找不到一个这样的配置文件的话向导将会自动创建此文件.Custom rev-eng strategy
允许你指定一个自定义的反向工程策略类. 这个类允许你用编程的方式来自定义反向工程处理过程的各个方面. 参考 使用自定义反向工程策略 来获取详细信息.
Type Mapping
决定是否在类型映射属性中使用 Java 或者 Hibernate 类型, 例如 java.lang.String 对应 string. 这个设置只能在向导第 3 页的 Customized Type Mappings 列表中没有指定更多信息时才能使用.
ID Generator
ID Generator 是 Hibernate 映射文件必须有的内容. 它定义了持久类实例的唯一主键生成器 Jaav 类. 参考 资源 部分里面的 Hibernate 文档链接, 里面描述了每个 ID 生成器的详细信息.
如果留空或者更详细的配置在这个向导的第 3 页没有配置, Hibernate 映射引擎将自动为你选择一个 ID 生成器.Generate basic typed composite IDs
如果数据库表格包含有多个列的主键, 将总是使用 <复合主键> 映射.
如果这个选项启用并且有对应的多个外键, 每个主键列将依然会被作为'简单的' 标量 (string, long, 等), 而不是引用到一个实体. 将会创建 <many-to-one> 元素, 但是它们将会标记为非可更新和非可插入的字段.
如果你禁用这个选项(默认推荐用这种方式), 将会创建 <key-many-to-one> 元素来代替上面的生成内容.Generate version and timestamp tags
如果启用, 名为 "version" 和 "timestamp" 的列将会在生成的映射文件中作为 <version> 和 <timestamp> 标记出现.
Customized Type Mappings
允许你来指定一个自定义的 JDBC 类型到 Hibernate 类型的转换, 使用 Length, Scale, Precision 和 Nullability 作为精度控制对应原来的 JDBC 类型.
- 再第 3 页页可以使用默认的设置, 选择 Finish 将启动反向工程处理.
图 15. Hibernate Reverse Engineering 向导 - 第 3 页
表 6 - Hibernate Reverse Engineering 向导 - 第 3 页选项
描述Class name
对应当前数据库表格的数据对象类的完整名称.
ID Generator
想要对当前表所使用的 ID 生成器.
JDBC type
对当前列所使用的 JDBC 类型覆盖.
Property name
对应当前列所生成的属性名.
Hibernate type
对应当前列的 Hibernate 类型.
Include referenced / referencing tables
包含反向工程时当前数据库表引用的表格以及其它引用到当前表的数据库表.
Generate support for ListedTable(fk)->UnlistedTable and UnlistedTable(fk)->ListedTable
生成关联到当前表格的关联表的尚未反向工程过的代码, 这些表在当前配置页面尚未被显示.
在这个向导完成之后将会进行下面所列的操作:
-
创建类 AbstractEchoMessage . 这个抽象类提供了所需的 Hibernate 兼容的功能例如 public 的读取器和设置器方法, 这些方法对应的持久化属性和 ECHO_MESSAGE 数据库表格中的列相对应.
-
创建了一个 EchoMessage Java 类, 是 AbstractEchoMessage 类的一个具体的子类. EchoMessage 的目的是为了被修改后提供额外的业务和验证逻辑, 并且不会被后续的生成代码过程所覆盖.
-
创建了 EchoMessage.hbm.xml Hibernate 映射描述符. 这个文件指示 Hibernate 如何将 EchoMessage Java 类和 ECHO_MESSAGE 数据库表格中的数据相互映射.
-
在文件 hibernate.cfg.xml 中注册 EchoMessage.hbm.xml 映射描述符.
- 创建了 Java 类 EchoMessageDAO. 这个类提供了对 EchoMessage 数据对象类的方便的访问和操作.
- 创建 IBaseHibernateDAO 接口和 BaseHibernateDAO 类. 这些类对基本的 DAO 来说是必要的, 因为它使用了添加 Hibernate 功能时候所生成的 Session 工厂类(com.genuitec.hibernate.HibernateSessionFactory)来获取 Hibernate 会话.
图 15 高亮显示了所生成的类, 关键方法和映射文件, 以及被添加到 hibernate.cfg.xml 文件中的对生成的映射文件的引用.
图 15. Hibernate 反向工厂向导执行结束后更新过的项目内容
5.5 使用模版调整生成更好的代码
- 下载并解压缩这个文件到你的电脑的文件系统上.
- 按照 README.txt 文件中的说明来自定义这个模版.
- 调用反向工程向导, 在第 1 页选择启用 Use custom templates 选项, 然后将 Template directory 指向到包含模版树的文件夹e.
5.6 使用自定义反向工程策略
- 向你的项目中添加 MyEclipse Persistence Tools 类库.
- 右键点击你的项目然后选择 Properties.
- 在 Java Build Path 页面, 在 Libraries 面板下选择 Add Library....
- 选择 MyEclipse Libraries ,接着选中 MyEclipse Persistence Tools.
- 点击 Finish.
图 16. 添加 MyEclipse Persistence Tools 类库 - 在你的项目中创建一个新类, 让这个类继承自 org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy 类.
- 定义一个单参数的构造器, 然后覆盖其中的感兴趣的一个或者多个方法, 例如, columnToPropertyName.
这里是一个例子, 将在所有生成的属性前添加一个 "ME_" 前缀.MyStrategy.java
package com.genuitec.hibernate;
import org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy;
import org.hibernate.cfg.reveng.ReverseEngineeringStrategy;
import org.hibernate.cfg.reveng.TableIdentifier;
public class MyStrategy extends DelegatingReverseEngineeringStrategy {
public MyStrategy(ReverseEngineeringStrategy strategy) {
super (strategy);
}public String columnToPropertyName(TableIdentifier table, String columnName) {
return "ME_" + super.columnToPropertyName(table, columnName);
}
}图 17. MyStrategy.java 源代码清单
- 在反向工程向导的第 2 页, 选中刚才所创建的类
图 18. 指定反向工程策略
5.7 编辑映射文件
MyEclipse 包含了定制过的 XML 编辑器来专门用于修改 Hibernate 映射文件 (*.hbm.xml). 当双击映射文件的时候编辑器将会自动打开. 你也可以通过右键点击文件然后选择 Open With > MyEclipse Hibernate Mapping Editor.
功能
- 超链接浏览到引用到的类和属性.
- 类名自动完成提示.
- 属性名自动完成提示.
- 映射文件元素, 属性和值的内容完成提示.
图 19. Hibernate 映射文件编辑器
6. 使用 HQL 编辑器
MyEclipse 包含了一个 Hibernate 查询语言编辑器以及几个视图, 允许你根据当前的 Hibernate 配置来执行 HQL 查询语句.
功能
- 内容自动完成提示.
- Hibernate Dynamic Query Translator 在敲入 HSQL 查询语句时查看翻译后的 SQL 语句.
- Hibernate Query Results 视图可以查看多个查询结果集; 结果的属性显示在 Properties 视图.
- Query Parameters 视图可以很方便的执行带有参数的查询.
- 项目选择器允许你随时切换不同的 Hibernate 项目中的 Hibernate 配置.
下面的步骤将指导你如何使用 HQL 编辑器
- 右键点击 Package Explorer 中的 HibernateDemo 项目.
- 在右键菜单中的 MyEclipse 项目下, 选择 Open HQL Editor...
注意: HQL 编辑器也会在你尝试查看后缀为 hql 的文件的时候打开.
图 20. 打开 HQL 编辑器 - 如果你没有在 Hibernate 透视图下工作, 你将会被提示切换到相应的视图, 同意切换即可.
注意: 总是可以切换到这个视图, 通过选择菜单项 Window > Open Perspective > Other > MyEclipse Hibernate - 当编辑器打开时, 键入 "from EchoMessage"
- 点击 Run 图标或者按下 Ctrl + F9 来执行查询语句.
图 21. 在 HSQL 编辑器中执行查询 - 使用 Query Parameters 视图来执行带参数的查询.
图 22. Query Parameters 视图注意: 如果你在 HSQL 编辑器为特定的项目初始化后修改了配置, 映射文件或者数据类, 一定要记得点击嵌入的工具栏上的 Refresh 按钮来让编辑器使用最新的配置信息.
7. 测试 HibernateDemo 应用
既然 Hibernate 持久化功能已经整合进了 HibernateDemo 项目, 接下来的步骤就是对它进行测试. 一种测试 Hibernate 持久化功能的方法是创建一个带 main 方法的 Java 类. 测试类将使用 Hibernate 向导所生成的 Java 对象和 HibernateSessionFactory. 请查看图 18 中所示的 HibernateSessionFactory 类中所生成的两个重要的方法, 在测试代码中将会使用这两个方法.
图 23. HibernateSessionFactory 方法
显示了 HibernateSessionFactory 中的两个重要的静态方法.
getSession(): 这个方法将会返回一个 Session 变量, 可以用来访问 Hibernate Session 类. 任何时间你想使用 Hibernate 会话的时候你都可以调用这个方法来获取缓存过的这个 Hibernate 会话对象.
closeSession(): 如果一个会话已经启动过, 这个方法就简单的关闭它.
下面是创建测试类源代码的步骤列表:
-
创建一个新的 Java 类: File > New > Class
-
输入包名
-
输入类名(Name): HibernateReadTest
-
如 图 19 所示完成页面设置, 然后选择 Finish
图 24. 新建 Java 测试类 -
接下来, 打开文件 HibernateReadTest.java , 替换源代码为图 20 中所列的内容.
HibernateReadTest.java
package com.genuitec.hibernate;
import org.hibernate.HibernateException;
public class HibernateReadTest {
public static void main(String[] args) {
// Step 1 - Create the DAO
EchoMessageDAO dao = new EchoMessageDAO();
try {
// Step 2 - Use findById to retrieve the message with ID = 1
EchoMessage echoMessage = dao.findById(new Long(1));
System.out.println("Entity retrieval successful, message is: "
+ echoMessage.getMsg());
} catch (HibernateException e) {
System.err.println("Entity retrieval failed.");
e.printStackTrace();
} finally {
try {
dao.getSession().close();
} catch (Exception e) {
// do nothing
}
}
}
}图 25. HibernateTest.java 源代码清单
-
保存 HibernateReadTest.java
-
在 Package Explorer 中选中文件 HibernateReadTest.java
-
在顶部菜单栏中选择 Run 菜单, 接着选择 Run > Run as > Java Application
这是, Console 视图将会打开, 如果测试成功的话你将会看到如下面的 图 21所示的输出内容.
注意: 如果你看到了 log4j 警告, 你可以忽略它们即可.
图 26. HibernateReadTest Console 输出
8. 使用示例 HibernateDemo 项目
- 下载 HibernateDemo.zip
- 选择 Import > Existing Projects into Workspace, 选中 Select archive file 选项然后指向下载的 zip 文件. 点击 Finish 来导入到你的 Eclipse 工作台.
- 需要做以下修改来重新配置这个项目和你的开发环境保持一致.
- 从你的数据库复制 JDBC 驱动 JAR 文件到项目中. 通过右键点击文件然后选择 Build Path > Add to Build Path 来将它添加到项目的构造路径中.
- 连接到你的数据库然后执行 DDL/DDL.sql 文件中的代码来创建示例数据库并填充里面的值.
在执行之前, 也许需要修改表格的数据库前缀并使它和你的数据库的 DDL 规范一致. - 修改配置文件 hibernate.cfg.xml , 将里面的连接设置修改为你自己的数据库配置.
还可能需要修改 EchoMessage.hbm.xml 来修改 class 元素里面指定的 schema 属性为对应的数据库名称.
log4j.properties 用来控制 log4j 类库里面的日志等级.
ehcache.xml 用来控制 ehcache 类库.
HibernateWriteTest.java 是一个简单的演示类来展示 DAO 是如何写入数据到数据库的.
9. 总结
使用 MyEclipse 进行 Hibernate 开发的教程到此结束. 我们还有更多的快速入门文档, 包括如何使用 Database Explorer, Struts, JSF, Web Projects, 修改, 应用服务器配置, EJB 开发, 以及企业应用项目. 更多信息请访问 MyEclipse Quickstart library .
10. 用户反馈
如果你对本文有评论或者建议, 请提交到 MyEclipse Documentation Forum .
11.资源
- HibernateDemo 示例项目
- MyEclipse Reverse-Engineering 模版
-
从 Sun Microsystems.下载 Java 2 SDK, Standard Edition 1.4 from
-
从 Eclipse Foundation 下载 Eclipse 3.2 SDK 或者更高版本
-
下载 MyEclipse 5.0 30 天试用版; 过期后需要注册.
-
要了解更多 Hibernate 的信息请访问 官方 Hibernate Documentation 站点.
-
访问 MyEclipse Quickstart Library 获得更多 MyEclipse 教程.