- 映射单个表或对象
-
- 了解 ID 生成器的行为,包括如何以及何时生成值
- 了解如何映射主键,包括:
- 使用所生成的键值
- 映射简单的业务键
- 映射复合键
- 了解对象标识和业务等价性
- 配置数据库特定的信息,例如表名称、列名称、列宽和
列属性(可为 null、唯一性、类型等) - 使用 JPA/Hibernate 将现有的 Java 对象转换为持久对象
- 将基本 JPA 数据类型映射到相应的数据库类型
- 给定一个现有的数据库表,创建新的持久 Java 对象以映射该表
- 了解如何以及何时使用延迟加载和预先加载
- 了解并使用收集和值类型的最佳映射策略
- 处理持久对象中 Java/对象模型特定的属性和行为。其中包括:
- 序列化
- 瞬时属性
- 生成属性和计算属性
- 不可变属性
- 值类型
- 共依存属性(即一个属性的有效值取决于另一个
属性的值)
EX297
已停止 - 红帽认证 Persistence 专家考试
概述
考试概述
请注意:我们已不再提供此项考试和认证。
红帽认证 Persistence 专家考试旨在测试考生是否已准备好创建和维护相应的 Java™ 应用,该应用将 Java Persistence API(JPA)与 JBoss® Hibernate® 结合使用。
红帽认证 Persistence 专家考试证书展示了持有人已准备好完成相关的实际任务,即将 Java™ Persistence API(JPA)与 JBoss Hibernate 结合使用。JPA 是用于管理关系数据的 Java 编程语言框架,而 Hibernate 是实现 JPA 的高性能对象关系持久化和查询服务。
您应详细了解红帽认证 JBoss 开发人员考试的工具、环境和要求。
考试对象
红帽认证 Persistence 专家考试适用于:
- 经验丰富的 Java 应用开发人员和架构师。
- 业务组件和数据库开发人员。
考试前提条件
- 熟悉红帽企业 Linux 环境
- 了解红帽认证 Persistence 专家考试(EX297)目标
红帽建议考生在参加该项考试之前,先获得红帽认证 JBoss 开发人员(RHCJD)资质,但并非必要条件。
考试目标
考查要点
为了帮助您备考,请查看本文给出的考试目标,其中列出了操作任务的考查范围。红帽保留添加、更改和删除考试目标的权利。此类变更将在考前公布。
考试任务
红帽认证 Persistence 专家考试的考生应能够将 JPA 与Hibernate 结合使用,完成以下任务。为了帮助您学习,我们还提供了一份针对这些活动的推荐参考资料列表。
- 使用 JPA/Hibernate 映射对象关系
-
- 了解如何映射关系,包括但不限于:
- 值关系(例如,has-a details 对象)
- 父代/子代关系
- 一对一关系(单向和双向)
- 多对一和一对多关系(单向和双向)
- 多对多关系(单向和双向)
- 了解默认映射行为,包括但不限于:
- 外键名称
- 关联表名称
- 了解在创建关系时外键和联接表的使用
- 了解如何根据关系来映射复合主键
- 了解 JPA/Hibernate 集合(集合、映射列表和包)及其如何映射到对象和
表关系 - 了解不同集合对性能的影响
- 了解如何以及何时使用延迟加载和预先加载,包括两者的性能和代码
影响 - 给定一组现有的表和关系,创建与
数据库匹配的持久 Java 对象图 - 将现有的对象模型(包括各种关联)映射到持久性存储
- 确定所给定的业务流程的最佳加载策略
- 了解如何映射关系,包括但不限于:
- 使用 JPA/Hibernate 映射层次化对象关系
-
- 了解如何使用 JPA/Hibernate 表示不同的对象层次结构
- 使用 JPA/Hibernate 将现有的 Java 对象层次结构转换为持久对象
- 用对象层次结构表示一组现有的表关系(例如储蓄
帐户、信用卡和贷款帐户) - 了解多态查询和关联
- 了解不同继承策略的优势和局限性
- 分析并确定不同对象层次结构的最佳数据库表示形式
- 了解事务行为(ACID)
-
- 获取并使用以下项下的事务上下文:
- Java EE/CMT
- Java EE/BMT
- 使用 JPA API 的 Java SE
- 了解持久化上下文如何绑定到 Java EE 中的事务
- 了解使用 EJB3 的事务上下文传播
- 了解持久化上下文级别上事务回滚的后果
- 了解事务并发风险
- 评估数据丢失/损坏与性能折衷
- 获取并使用以下项下的事务上下文:
- 检索持久对象
-
- 了解 JPA/Hibernate 加载策略:
- 延迟加载
- 再选择加载
- 批量加载
- 了解并使用高级查询选项:
- HQL/JPA QL
- 标准 API
- 本地查询(SQL)
- 使用运行时预先抓取功能
- 使用指定参数
- 预测并规避 LazyInitializationException
- 分析并改进 JPA/Hibernate 性能
- 了解并使用 JPA 乐观锁和 Hibernate 悲观锁扩展功能
- 了解 JPA/Hibernate 加载策略:
- 操作持久对象
-
- 了解实体状态,例如:
- 瞬时
- 持久
- 附加
- 分离
- 删除
- 了解如何使用 JPA API 更改实体/实体图的状态
- 了解持久化上下文的生命周期及其对所托管实体的影响
- 应用 JPA/Hibernate 批处理功能:
- API 使用模式
- DML 查询
- 确定并应用最佳实现和级联设置,以操作对象图
- 评估何时使用批处理
- 了解实体状态,例如:
考生须知
文档和培训
考试期间,只能使用所测试产品的官方 JBoss 企业应用平台说明文档,以及产品随附的一些示例文件或其他说明文件。我们不会删除所包含的任何常规内容。
请注意,您将无法访问 jboss.org 或 hibernate.org 维基百科网站。尽管这些维基百科网站比较有用,而且包含可能与考试有关的内容,但其形式不适合在考试期间访问。我们要测试的是您,而不是阅读和更新维基百科网站的人。
禁止将任何复印件或电子文档带进考场。禁止携带的物品包括:笔记、书籍或任何其他材料。互联网访问将受到严格控制。备考时请牢记这些规则。
环境
考试期间,您将在红帽® 企业 Linux® 5.4 系统上进行操作,因此如果您已具备使用 Linux 或 UNIX 的经验将很有帮助。但是,丰富的 Linux 经验并不是必需的,因为本考试的目的是测试您使用 JPA 和 Hibernate 的技能,而不是操作系统方面的技能。您会在一个完整的桌面环境中进行操作,除了操作说明和其他有关红帽企业 Linux 的参考文件外,我们还会提供一个基本命令列表供您参考。
Fedora 为您提供免费替代产品,方便您练习 Linux 技能。通过 Live CD 版本,您可在 Fedora 中操作,而无需将其安装到计算机。即便 Live CD 版本与红帽企业 Linux 环境不是完全匹配,它也足以让您熟悉相关系统要求。
考试形式
红帽认证 Persistence 专家考试是一项 100% 基于实际操作能力的考试,考生将通过完成相应的任务而不是复述事实来证明自己的知识与技能。大多数 IT 认证考试都会提出一系列问题,让您选择 A、B、C 或 D,或是不常见的选择所有适用选项。在红帽认证 Persistence 专家考试中,您不会看到此类问题。实际上,您根本不会看到任何问题。相反,我们将为您提供一个真实的环境,供您执行一系列实际任务。例如,我们可能会要求您创建并维护持久关联,而不是提出一系列有关 JPA 映射标注的问题。因此,建议考生秉着一种怀疑的态度来看待任何在线考题等类似内容。有关本项考试内容的唯一最佳信息来源就是本文档。
红帽认证 Persistence 专家考试的时间为 4 小时。考试开始之前,需要一些时间来检查考生身份和收集信息。
考试环境
开发工具
除了桌面环境外,我们还将提供已安装和配置好的 JBoss 开发人员工作室 3(JBDS)副本。本考试不是 JBDS 考试,即使您不知道或不会使用 JBDS,也可以完成考试任务。但是,JBDS 是开发和维护 JPA/Hibernate 应用的出色工具,因此具备一定的 JBDS 经验和技能肯定会对考试有所帮助。如果您无法访问受支持的 JBDS 副本,则可以下载免费版本。如果您尚未注册红帽,则需要创建一个免费红帽帐户。如果您不想注册红帽来免费下载,那么带有 JBoss Tools 4 插件的标准 Eclipse 版本也足够用于考试练习。
考试中的项目是用 Maven 创建的。如果您不想使用 JBDS,则可以使用标准文本编辑器(例如 gedit 或 vi)、命令行和 Maven。请注意,本考试是在封闭环境中进行的,而且 Maven 采用离线运行模式。您将无法使用尚未导入到本地环境中的任何 Maven 存储库或插件。
工作目录
开始考试时,默认的 JBDS 工作区内将包含 1 个或多个考试中必须要用到的项目目录。您的开发工作可以不使用 JBDS,但所有任务都必须使用默认的工作区目录和所提供的项目目录。再说一遍:所有代码和资源的开发都必须在所提供的目录结构中进行,并与之保持一致。
编码标准
这是一项上机实操考试,您必须编写代码才能完成任务。不同的公司有不同的编码标准。就像任何实际环境一样,您需要遵循本地编码标准。下面列出的是一些有关考试编码标准的信息,可能会对您的备考有所帮助。考试过程中也会提供这些信息。就本考试而言,您可以想象自己是一名刚入职的 JPA/Hibernate 开发人员,现在被要求完成一个项目,那么一切就容易多了。只是不幸的是,原来的开发人员半途而废,且音信皆无。您需要拾起先前开发人员的烂摊子,并在有效的时间内尽可能多地完成编码。
当然,代码已被妥善地记录在案,而且里面还有许多的 TODO(待办事项)列表,可以指示您需要做些什么。但请注意,单凭 Javadoc 和 TODO 列表是远远不够的,在实施 TODO 列表之前,您需要阅读任务描述并了解需要执行的操作。如果您认为任务文本、UML/PDM 图表和 Javadoc/TODO 列表之间存在冲突,请务必按照任务描述中的说明进行操作。
以下是要记住的一些工作要点:
- 代码格式并不重要。无论您是使用制表符还是空格,或是大括号采用哪种放置方式,都不会影响对您工作的评估。
- 您可以使用 XML 文件、字段标注或属性标注来映射类,具体使用哪个并不重要。现有的代码使用了少量的字段级标注,但您尽可以更改为自己喜欢的映射样式。
- 许多类的组织方式都不合常规。字段和相关方法被组合在一起。这是非常不正常的,因此建议您不要这样做。这样做的目的是方便您处理单个项目,而不必在代码中来回搜索字段和相关方法。如果您想使用常规的代码结构,请随意对类成员进行排序。提示:在 JBDS 中,编辑器窗口右侧的蓝色 TODO 标记块以及“大纲”视图中的属性列表都有助于快速浏览这些类。
- 与实际环境不同,注释和异常消息并不重要。本考试采用机器标记方式,因此注释和消息都将被完全忽略。
- 代码质量和最佳实践至关重要。您应始终采用最佳实践,并假定不当或欠佳的实践都会被标记下来。例如,不公开字段成员被认为是 Java 最佳实践,因此,应始终为对象属性使用标准 JavaBeans getter 和 setter 方法。
- 考试中的项目是汇同其他部门的其他应用一起设计的。除非代码中的任务描述或 TODO 列表有明确指示,否则不得更改任何现有方法的签名。此规则的唯一例外是:在适用的情况下,您可以并且应该让签名更具体化(即采用子类和/或特定泛型)。例如,在合适的情况下,您应该用 List 来代替 Collection{cke_protected}{C}%3C!%2D%2D%3F%2D%2D%3E。
- 您可以根据需要添加字段、属性和方法。
- 由于项目专注于持久实体,而且控制器/服务层没有任何输入,因此持久实体的编码需要更具防御性。也就是说,您的实体方法应努力防止业务逻辑破坏对象的一致性。例如,对于不可为 null 的属性,如果传递的是 null 值,则其 setter 方法应引发 NullPointerException。
- 除非另有说明,否则所有实体都必须使用由持久化引擎自动生成的数据库主键。
- 如果某个方法由于某些内部问题而需要引发异常,请务必使用 RuntimeException,切勿创建业务特定的异常。例如,如果问题是方法的参数无效,则可以使用 IllegalArgumentException。如果问题是对象模型或持久性存储的状态不一致,则可以使用 IllegalStateException。当然,在适用的情况下,可以始终使用 NullPointerException。除非明确要求,否则请勿使用 JPA 过渡持久化功能将更改自动传播到对象图中的关联实体。我们的经验表明,许多业务级开发人员都对该功能感到困惑,如果使用不当,可能会导致严重的性能和可靠性问题。最后的警告:如果无法编译或无法正常运行,我们将无法评估您的工作。特别要注意的是,持久关联一旦被破坏,会导致所有持久操作失败。与其冒险干扰其他有效关联,不如注释掉一个有疑义的关联。测试项目中包含许多 JUnit 测试,我们建议您在完成任务之后运行整套测试。但请注意,随附的 JUnit 测试并不是真正的考试,而且即便您的代码通过了测试,也不一定意味着您的工作能获得满分。
成绩及公布
考试的官方成绩由红帽认证中心独家公布。红帽未授权考官或培训合作伙伴直接向考生公布考试结果。考试成绩通常会在 3 个美国工作日内公布。
公布的考试结果为各个部分的具体得分。红帽不公布单个项目的成绩,也不会应考生要求提供额外信息。