MyEclipse Hibernate 入门教程中文版(含视频)

导读:
   声明: 中文文字版权归 刘长炯 所有, 原文及相关的图片等资源的版权归原作者 Genuitec L.L.C 公司所有.
   1. 简介
  欢迎阅读 MyEclipse 的 Hibernate 入门教程. 在这个教程里我们将会介绍一些 Hibernate 框架基本功能的使用, 例如在 MyEclipse 中进行 OR 映射.
  就核心而言, Hibernate 是 OR-mapping 技术的具体实现, 用来在运行的时候映射数据库表格到 Java 对象. 使用像 Hibernate 这样的持久化框架可以让开发人员关注于如何编写业务逻辑而不是去编写正确有效的持久层(包括但不限于 DAO, SQL 查询, JDBC 代码, 连接管理等).
  然而, 要使用 Hibernate, 必须生成正确的持久化映射文件, 设置数据库连接属性以及编写 DAO 来读写映射的实体类. 很幸运的是, 使用 MyEclipse 的开发人员不需要写这样的代码因为 MyEclipse 会自动生成所有的代码. 这一点自动生成的代码可以将你从编写 Hibernate 代码中解放出来, 这样你就可以集中精力在最重要的任务上: 编写应用的业务逻辑.
   2. 建议的听众
  这个教程的目标受众是那些好歹对 MyEclipse 或者 Eclipse 有所了解的开发人员, 应该掌握使用 IDE 进行浏览以及理解一些常见的概念例如 "View 视图" . 另外, 开发人员最好熟悉 Java 中的持久化开发 (JDBC, EJB, iBatis, JPA, 等等.), 这样才能更快的理解 Hibernate 扮演的角色. 尽管这个教程介绍了一些 Hibernate 的基础只是, 但是这并不能代替 Hibernate 官方网站的 Hibernate 参考手册, 这些信息位于文末的 资源部分. Hibernate 包含了很多功能来支持企业级别的应用开发, 这些可以通过官方参考文档或者阅读高质量的 Hibernate 书籍来学习.
  如果您对 MyEclipse 和 Hibernate 都感到不熟悉, 这个教程可以帮你熟悉两个部分的基础知识. 要学习更多的 MyEclipse 或者 Hibernate 文档, 请阅读我们的产品 文档或者文末的 资源部分.
   3. 系统需求
  这个教程基于 MyEclipse 5.1 制作, 捆绑的是 Hibernate 3.1 类库. 如果你在使用其它版本的 MyEclipse, Hibernate, 绝大部分的屏幕操作和说明都将是十分相似的.
  如果你使用的是最新版本的 MyEclipse, 并且发现本教程的一些部分和你使用 MyEclpse 时所看到的屏幕不一样, 请 告诉我们, 我们(注: MyEclipse 文档团队, 不是我, 翻译这份文档的人) 将会确保解决任何不一致的地方.
   4. Hibernate 介绍
  在早期的 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 代码来存储, 读取以及更新数据库中的信息.
   5. 开始工作
  如果你需要这个教程所创建的项目文件, 以及所使用的数据库表格的建表 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 的项目
   6. 反向工程
  现在已经建好了数据库连接和配置好的项目, 接下来要做的就是使用 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 对象然后显示在界面的左下侧. 让我们来看看工作过程:
  图 4. 使用 HQL 编辑器和 HQL 视图
   7. 编写和运行 Hibernate 代码
  尽管熟悉 MyEclipse 提供的工具很重要, 不过我们只需要了解部分工具就行了, 所以让我们写点自己的代码测试吧!
  像我们以前提到的那样, 使用 MyEclipse 的一个最大的好处就是可以生成所有的模式化的 Hibernate 映射和 DAO 的代码. 这意味着反向工程数据库之后你就可以开始编写自己的程序来读取, 写入以及更新数据库中的数据了.
  在这个教程里面我们讲编写一些简单的方法, 依次执行下面的3个操作:
  创建一个新 User然后把他添加到数据库中
  根据主键从数据库中加载 User, 并打印出他的信息
  修改 User的值, 更新数据库中的记录然后打印出来修改过的值进行验证
  这三个方法 ( addUser, listUser, changeUser) 将在新建的类里面的 main方法中调用. 要更好的理解这个 Hibernate 代码如何编写的, 让我们创建这个类, 将方法复制到类里面(使用复制和粘贴)然后一行一行的检查:
  图 5. 创建一个使用我们所生成的 Hibernate 代码的新类
  看过代码后我们可以很直接的理解所有的事情. 我们使用 MyEclipse 为我们生成的 DAO 类来获取, 更新以及保存我们的对象到数据库中, MyEclipse/Hibernate 来关心所有的其它细节的实现. 没有比这更简单的了.
  现在到了有趣的地方了, 让我们运行代码并且看看是不是真正的进行了正确的操作:
  图 6. 运行我们的示例 Hibernate 代码
  真棒! 工作的结果完全符合我们的预期! 我们使用 HQL Editor 来查询数据库并确保我们的用户保存成功. 另外, 我们还可以很容易的切换到 Database 透视图然后查询数据库来检查表格中的用户记录.
   8. 小结
  尽管教程里面的例子非常简单, 但是涉及的技术和信息对我们理解 Hibernate 和 MyEclipse 都是至关重要的. 这个教程中所涉及的基础知识对任何使用 Hibernate 的项目都是有效的: 将对象映射到数据库的核心思想. 在这些基本的功能正常工作后, 你可以任意根据需要来增强, 扩展或者改变应用程序, 而 MyEclipse 将继续帮助你开发和扩展.
  希望本教程对你有所帮助. 如果你对本教程有任何建议或者问题, 请 告诉我们. 用户的反馈对我们编写这些教材是非常用价值的.
   9. 常见问题
   Hibernate 和 EJB 3 / JPA 相比如何?
  Hibernate 3.2 事实上兼容 JPA, 实现了所有的标注, 可以自动化, 很容易的使用 JPA 来开发. 所以不用使用 JPA 的商业实现, 你可以保持所有的类文件中的标准 JPA 标注不变, 而在底层实现选择 Hibernate(译者注: JPA 是接口/规范, Hibernate 是一种实现, Hibernate implements JPA, 这种策略和 JDBC, Web 容器等等的设计思想是一致的).
   Hibernate 是否能支持大型应用?
  当然可以. 事实上 Hibernate 的两位创建者都拥有大型企业应用的顾问经验. Hibernate 展现了他们对于应用程序持久层所持的观点. 几年之前, Gavin King, 向开源社区发出挑战来寻找手工调优过的执行速度远远超过 Hibernate 所自动生成的SQL, 这说明 Hibernate 框架非常关注于功能, 易用性和效率.
   我是否需要在程序里包含所有的 Hibernate 类库? 文件太多了!
  不需要. Hibernate 是个非常复杂的框架, 基于大量的第三方框架来实现. 你不需要很多 JAR 文件, 这取决于你打算如何使用 Hibernate . Hibernate 发布包里面的 /lib 目录下有个文件叫 README, 这个文件解释了每个类库的作用, 如果你想自己控制发布哪些文件, 可以参考这个文件.
   Hibernate 中的"Session" 是什么东西? 为什么我必须和它打交道?
  Hibernate 在简单的外表之下隐藏着许多 "魔法" . 一部分功能用来监视映射过的对象的状态, 当发现它们被修改过后(例如调用了设置器方法), 然后及时保存更改过的值到数据库中. 在小系统中你可以想象 Hibernate 一次管理所有对象, 但是在很大的企业系统中可能会有上百万的映射对象需要一次载入, 然而单台电脑将不会有足够的内存或者 CPU 周期来处理这么多的实体. 这就是"session(会话)" 所起的作用. Hibernate 会话打开后, 它就表示一个处理所有对象的容器. 大多数人发现可以使会话维持一个工作事务的工作时间, 尽管对于性能优先的应用程序来说, 会话维持的时间太短会带来反复创建所造成的开销. 另一种 Hibernate 会话设计是使用一个 Servlet 过滤器, 当一个新 HTTP 会话创建时打开 Hibernate 会话, 当 HTTP 会话销毁时来关闭 Hibernate 会话. 对于大多数中等大小的 web 应用程序, 运行在相当好的电脑上这将会在性能和内存需求间获得一个很好的平衡点. 尽管你一直都意识到什么对象从数据库加载和保存, 然而当 session 保持不关闭的情况下, 这些对象有可能会留在内存中(译者注: 也即占用额外的系统内存或者说造成内存泄漏).
   MyEclipse FAQ
  常见问题 (FAQ) 支持论坛
   10. 资源
  下面是一些资源的链接, 我们希望能帮助解答您在阅读本教程中遇到的大部分关于 Hibernate 的问题:
   文件
  Hibernate 入门项目文件(本教程所使用的项目源代码)
  usertable 的建表 SQL 语句
   参考
  Hibernate 3.2 参考文档 ( HTML) ( PDF)
  Hibernate 3.x Javadoc
  Hibernate 3.2 标注 参考文档 ( HTML) ( PDF)
  EJB3 / JPA Javadoc(Hibernate 是 JPA 规范的兼容实现)
  Hibernate Wiki
   基础知识
  Hibernate 教程 - Hibernate 之路
  完整的 Hibernate 教程
  官方的 Hibernate 外部链接
   11. 反馈
  我们非常希望听到您的声音! 如果你喜欢本教程, 有建议甚至错误修正建议, 请告诉我们. 我们通过 文档论坛来跟踪所有用户对学习资料的建议. 请告诉我们您正在评论的是哪份 MyEclipse 资料这样我们可以更快的查明出现问题的章节.

本文转自
http://beansoft.java-cn.org/myeclipse_doc_cn/hibernateintroduction/
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值