MyEclipse数据库教程:Hibernate开发

翻译|使用教程|编辑:陈津勇|2019-11-05 14:07:18.773|阅读 21 次

概述:开源JORM使用简单,且提供多种功能。通过本文,您将学到:配置Hibernate项目、逆向工程数据库表、使用两个编辑器。

相关链接:

下载MyEclipse  购买MyEclipse

1、什么是Hibernate?

Hibernate是一种非常流行的、基于Java的开源对象关系映射(JORM)引擎,易于启动和运行,提供了丰富的功能,包括:

  • 多种映射策略

  • 传递持久性

  • 单对象到多表的映射

  • 集合支持

  • 多态关联

  • 可自定义的SQL查询

Hibernate用于在运行时将数据库结构映射到Java对象。使用像Hibernate这样的持久性框架,开发人员可以专注于编写业务逻辑,而不是编写准确、高效的持久性层(包括DAO、SQL查询、JDBC代码、连接管理等)。

任何需要在Java应用程序对象和数据库表之间移动数据的Java应用程序都可以使用Hibernate。因此,它在开发两层和三层Java EE应用程序中非常有用。将Hibernate集成到您的应用程序中涉及:

  • 将Hibernate核心和支持JAR库安装到项目中

  • 创建一个hibernate.cfg.xml文件来描述如何访问数据库

  • 为每个可持久的Java类创建单独的映射描述符文件

1.1导致Hibernate的历史

在Java数据库和Web编程的早期,开发人员使用java.sql包提供的不同类访问其数据库,这包括从DriverManager获取驱动程序、创建和使用连接、正确处理异常、关闭连接等。在此阶段,一个常见的问题是忘记清理数据库连接,并在它们运行了一段时间后在应用程序中得到连接异常的反馈。

几年后,连接池成为一个大话题,因为它们让开发人员不用再担心创建和管理(清理)数据库连接,而是把精力集中在他们的SQL和ResultSet解析代码上。突然之间,长时间运行的应用程序中数据库连接异常的问题基本解决了。但是,仍然经常看到数百行样板代码用于用值填充查询并解析SQL查询返回的ResultSet。

又过了几年,有人想到了将ResultSet结果直接自动映射到Java对象的方法,这在很大程度上解决了所有冗余样板解析代码的问题。那时,Java数据库开发已经迈出了几大步,并且变得越来越简单。然后,Hibernate模式为人熟知。

随着Hibernate的出现,不仅这些东西会继续自动化,Hibernate也会管理内存中对象的状态,它会担心何时以及如何从数据库读取或写入对象值。现在,开发人员只处理对象(或映射对象),Hibernate则处理其他所有内容。开发人员不再编写JDBC和SQL代码。相反,他们使用的是为他们工作的代码。

当Hibernate出现时,另一种可用的持久性技术是EJB2.x。Hibernate的时间安排、易用性和强大功能都是Java领域在相当长一段时间内所采用的最快技术之一。

2、Hibernate项目配置

您可以通过创建任何受支持类型的基础项目(例如Java或Web项目)添加Hibernate facet,来创建启用了hibernate的项目。MyEclipse为您创建一个hibernate.cfg.xml文件,您必须指定数据库连接详细信息。

您也可以通过打开项目的Project Facets属性,将多个构面同时添加到项目中。

facets_properties.png

2.1Hibernate映射和配置

Hibernate用Java编写,可以通过两种类型的配置文件进行高度配置。第一种配置文件名为hibernate.cfg.xml。启动时,Hibernate会查询此XML文件的操作属性,例如数据库连接字符串和密码、数据库方言以及映射文件的位置。Hibernate在类路径上搜索此文件。

hibernate_caps_and_config_file.png

第二种类型的配置文件是映射描述(文件扩展名* .hbm),它指示Hibernate如何在特定的Java类和一个或多个数据库表之间映射数据。MyEclipse提供了用于处理所有这些配置文件类型的工具,并在您更改数据库和Hibernate映射的Java类时使它们保持同步。编辑器具有以下功能:

  • 基于表单的高级编辑器和随附的向导

  • 超链接导航到引用的类和属性

  • 类名自动完成

  • 属性名称自动完成

  • 内容有助于映射文件元素、属性和值。

hibernate-mapping-editor.gif

3、逆向工程数据库表

您可以将数据库表信息反向工程为Hibernate(Java)对象,然后将它们添加到项目中。为了最大程度地控制生成的Hibernate对象,可以在向导中选择详细信息,例如主键生成策略、对象名称、类型等。

在Database Explorer透视图中,可以查看所连接的数据库的内容。在DB浏览器中,右键单击要反向工程的表,然后从菜单中选择Hibernate Reverse Engineering。完成向导后,系统将提示您切换到Hibernate透视图。

这些类将生成到在向导中选择的Java包中。

对数据库表进行反向工程时,实体将显示在配置文件的Mappings部分中。

4. HQL Editor

HQL Editor以及Hibernate透视图中的其他HQL视图可帮助开发、评估或测试HQL查询。HQL是一种类似于SQL的语言,称为Hibernate查询语言。它有时看起来像是简化的SQL,使用对象名和引用而不是表名和列名。该编辑器具有以下功能:

  • 内容辅助

  • 输入时,Hibernate动态查询转换器视图将HQL查询转换为SQL。

  • Hibernate Query Results视图可以包含多个结果集。结果属性显示在Properties视图中。

  • 查询参数视图可轻松执行变量查询

  • 项目选择器,可以在不同的Hibernate项目之间切换上下文。

使用HQL Editor,可以即时编写并运行HQL。编辑器利用MyEclipse从数据库进行反向工程的对象,将查询转换为SQL(如右下所示),然后运行它。结果在Java对象中返回,并显示在左下角。

hibernate-hql-1-annot.png

对数据库进行反向工程之后,就可以开始编写应用程序以读取、写入和更新数据库中的对象。放置好Java类和方法后,可以在HQL Editor中运行Hibernate查询来查询数据库,这是查询数据库的另一种方法。您还可以切换到Database Explorer透视图并从那里查询数据库以查看相同的结果。

5、Criteria Editor

除了HQL编辑器之外,MyEclipse Hibernate工具还包括一个Criteria编辑器。Hibernate中的Criteria是一种利用对象实例结合查询约束来针对实体创建查询的方法。例如,假设创建一个类型为User的实体实例,将实体指定为查询的条件,并告诉条件只返回前10个结果,这是创建用于实体的复杂查询的有效且快速的方法。

要访问Criteria Editor,请右键单击包含Hibernate facet的项目,然后选择MyEclipse > Open Criteria Editor。

打开Criteria Editor后,可以在编辑器中输入任何表示条件的有效Java代码,并使用编辑器顶部的“Run”图标执行它们。

下面的示例显示了一个基于EchoMessage实体的简单条件,要求Hibernate返回其EchoMessageId值为2的实体。结果出现在Result视图中。

hibernate_criteria.png

可以使用MyEclipse中的Criteria Editor来编写和执行任何有效的基于条件的代码。在Java编辑器中输入条件时,选择它并调用快速修复将显示“Copy to Criteria”编辑器操作。选择此操作将打开“Criteria”编辑器,并使用所选文本进行初始化。

您可以在Criteria Editor中测试和编辑条件。完成后,关闭编辑器可用修改后的条件查询替换最开始选择的文本。

6、常见问题

Q:Hibernate与EJB 3/JPA相比如何? 

A:Hibernate 3.2实际上是与JPA兼容的,它实现了所有新的注释,这些注释让JPA使用起来非常自动化且更简单。因此,除了使用JPA的commercial implementation外,还可以使用Hibernate,所有标准JPA批注仍将保留在类中,而无需进行任何更改。

Q:Hibernate可以扩展到非常大的应用程序吗?

A:可以。实际上,Hibernate的根源来自于两位创始人在大型企业应用程序中担任顾问的经验,Hibernate是他们对持久性在应用程序中应如何起作用的看法。

几年前,Gavin King向社区提出了一项挑战,要求找到手工调整的JDBC SQL。该SQL执行的幅度要比Hibernate生成的SQL快,由此也能看出该框架非常注重功能、灵活性和性能。



想进一步了解MyEclips?【MyEclipse官方中文网】知你所需,解你所惑!

想与更多人聊MyEclips?加入MyEclipse中国(官方2):742336981畅所欲言吧!

想及时获取MyEclips资讯?扫描下方二维码,MyEclips信息跟你走!



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果

文章转载自:Genuitec https://www.genuitec.com/docs/persistence/hibernate-development

登录 慧都网发表评论


暂无评论...

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关厂商
相关产品
MyEclipse

功能最全面、性价比最高的Java IDE之一

在线
客服
在线
QQ
电话
咨询
400-700-1020
购物车 反馈 返回
顶部
在线客服系统
live chat