文档章节

关于在MyEclipse中使用Hibernate

琴弦上的鱼
 琴弦上的鱼
发布于 2014/08/29 13:03
字数 2036
阅读 43
收藏 0

在早期的 Java 数据库和网站开发中, 开发人员通过 java.sql 包里面的各式各样的类来操作数据库; 你甚至可以记起来自己当时怎么写的. 编写的方式基本上就是通过 DriverManager 获取 Driver, 创建 Connection, 使用 Connection, 正确处理异常, 关闭连接等等. 这种情况下常见问题包括忘记关闭数据库连接, 或者运行一段时间后出现了连接异常.

几年之后 "连接池" 成了个大话题因为它可以让开发人员不用再关心创建和管理(关闭)数据库连接, 这样可以集中精力于他们的 SQL 和 ResultSet 分析代码中. 这样, 我们几乎解决了长时间运行的应用程序里面的连接异常的问题. 然而, 还是经常能看到成百上千行的代码来生成一段查询数据的SQL 然后分析 ResultSet 来填充查询结果.

又是几年过去了, 某些人产生了一个想法: 自动将 ResultSet 里面的结果直接映射成 Java 对象, 这解决了大部分的像模版一样的重复多余的分析结果集的代码. 这时候 Java 数据库开发已经前进了好几步, 已经变得相对很容易了. 在这些基础之上, Hibernate 出现在我们的面前.

Hibernate 带来的想法不仅仅是自动化这些过程, 而且在内存中管理对象的状态, 它来关心什么时候以及如何将对象值"读取"或者"写入"数据库. 忽然的, 所有的开发人员都在完全使用对象(或者映射的对象)并且让 Hibernate 来处理其它的事情. 开发人员完全不再需要编写 JDBC 和 SQL 代码(译者注: 这只是用对象方式设计数据库的新项目中才可以, OR 这个词限定了它的适用范围, 并不是什么项目都能用 Hibernate 的). 现在他们通过持久化框架的代码来代替过去所写的那些复杂的代码.

在 Hibernate 出现的时候, 其它的可用的持久化技术包括 EJB 2.x. Hibernate 的适时出现, 易用性, 以及大量开发人员的支持导致它很快在 Java 开发领域声名雀起.

在这个教程中, 我们将会看一看如何使用 MyEclipse 开发 Hibernate 来简化开发过程, 甚至比单独使用 Hibernate 更方便. 事实上, MyEclipse 通过在短短几秒内生成 Java 应用的持久层的代码, 不需要你来编写任何 Hibernate 映射或者配置文件.

我们通过创建一个简单的数据库开始, 稍后这个数据库将会被反向工程来生成到一个启用了 Hibernate 的项目中. 接下来, 我们将会编写一些简单的 Java 代码来使用 MyEclipse 所自动生成的 Hibernate 代码来存储, 读取以及更新数据库中的信息.

开始工作

如果你需要这个教程所创建的项目文件, 以及所使用的数据库表格的建表 SQL 脚本, 可以在文末的 资源 部分找到. 不过还是强烈鼓励读者自己照着教程来创建这个项目.

要在 MyEclipse 中开始使用 Hibernate 和 Spring, 首先我们需要有一个数据库连接来供程序来使用. 在这里, 使用的是 MySQL 5, 事先创建了一张示例表格 user table . 我们使用 MySQL Connector/J JDBC 驱动来连接到安装好的 MySQL. 现在首先来创建一个新的连接, 在 MyEclipse 中连接到我们的数据库:

图 1. 创建数据库连接

现在已经创建好了连上了数据库的连接, 第二步就是创建一个启用了Hibernate 功能的项目 (Java, Web, Web Service, 等等, 都可以). 可以先创建一个任意类型的基本项目, 例如 Java 或者 Web 项目, 然后通过 MyEclipse 菜单下的选项来添加 Hibernate capabilities 给当前项目, 如下所示:

图 2. 创建一个支持 Hibernate 的项目

反向工程

现在已经建好了数据库连接和配置好的项目, 接下来要做的就是使用 MyEclipse 来进行反向工程, 从数据库表格生成 Hibernate (Java) 对象并把这些对象放到当前的项目中去.

在下面的例子中, 我们使用了最简单模式下的反向工程, 全部采用默认设置. 当然, 如果愿意你也可以通过点击 "Next" 按钮切换屏幕时来选择一些选项例如主键生成策略, 对象名字, 类型以及其它设置. 现在让我们开始反向工程表格:

图 3. 反向工程从 user 表生成 Hibernate (Java) 对象

现在数据库表格已经被自动反向工程到我们的项目中了, MyEclipse 中有很多种 Hibernate 工具可以使用(甚至不需要写代码!). 第一个要看的工具是 HSQL 编辑器.

HQL 编辑器, 以及其它的 HQL 视图都位于 Hibernate 透视图中, 可以协助开发, 执行或者测试 HQL 查询. HQL 是一种类似于 SQL的语言, 叫做 "Hibernate 查询语言". 它可以从某种意义上看作简化过的 SQL, 但是用的是对象名字和属性来代替数据库表和字段的名字. 可以在位于 资源 部分的 Hibernate 参考文档中来详细的学习 HQL.

使用 HQL 编辑器你可以即时编写 HQL 然后执行. 编辑器通过使用 MyEclipse 从数据库反向工程所生成的对象, 把 HQL 查询翻译成 SQL(显示于界面的右下侧), 然后加以执行.  查询结果将会返回为 Java 对象然后显示在界面的左下侧. 让我们来看看工作过程:

 

编写和运行 Hibernate 代码

尽管熟悉 MyEclipse 提供的工具很重要, 不过我们只需要了解部分工具就行了, 所以让我们写点自己的代码测试吧!

像我们以前提到的那样, 使用 MyEclipse 的一个最大的好处就是可以生成所有的模式化的 Hibernate 映射和 DAO 的代码. 这意味着反向工程数据库之后你就可以开始编写自己的程序来读取, 写入以及更新数据库中的数据了.

在这个教程里面我们讲编写一些简单的方法, 依次执行下面的3个操作:

  1. 创建一个新 User 然后把他添加到数据库中
  2. 根据主键