Pro JPA2中文版:精通Java持久化API
基本信息
- 作者: (加拿大)Michael Keith Merrick Schincariol
- 译者: 巢文涵
- 出版社:清华大学出版社
- ISBN:9787302258025
- 上架时间:2011-10-24
- 出版日期:2011 年10月
- 开本:16开
- 页码:460
- 版次:1-1
- 所属分类:
计算机 > 软件与程序设计 > JAVA(J#) > 综合
内容简介回到顶部↑
在《pro jpa2中文版:精通java持久化api》中,mike keith和merrick schincariol给出了对java持久化api的全面指南。作为作者,他们在o/r映射技术方面都具有相当丰富的经验,同时,mike还具有建设jpa 本身的多年经验。
《pro jpa2中文版:精通java持久化api》涵盖了java持久化api的所有方面。它既全面又易于理解,同时还兼具趣味性和严格性。它不仅向读者介绍了api的各个方面,讨论了如何以最有效的方式使用api的各个部分,而且还解释了隐藏的内部原理,以及如何避免当使用不同的供应商实现时的可移植性陷阱。贯穿本书,作者仔细地解释了对象关系映射的工作原理,从而使读者不仅可了解java持久性功能的相关知识,而且还可以深入地理解它的工作原理。希望您会喜欢它。
《pro jpa2中文版:精通java持久化api》涵盖了java持久化api的所有方面。它既全面又易于理解,同时还兼具趣味性和严格性。它不仅向读者介绍了api的各个方面,讨论了如何以最有效的方式使用api的各个部分,而且还解释了隐藏的内部原理,以及如何避免当使用不同的供应商实现时的可移植性陷阱。贯穿本书,作者仔细地解释了对象关系映射的工作原理,从而使读者不仅可了解java持久性功能的相关知识,而且还可以深入地理解它的工作原理。希望您会喜欢它。
作译者回到顶部↑
目录回到顶部↑
《pro jpa2中文版:精通java持久化api》
第1章 简介 1
1.1 对象-关系映射 1
1.2 java持久化支持 7
1.2.1 专用解决方案 7
1.2.2 jdbc 7
1.2.3 企业javabean 8
1.2.4 java数据对象 8
1.3 为什么需要另一种标准 9
1.4 java持久化api 10
1.4.1 规范的历史 10
1.4.2 概述 11
1.5 本章小结 13
第2章 入门 14
2.1 实体概述 14
2.1.1 持久性 14
2.1.2 标识 15
2.1.3 事务性 15
2.1.4 粒度 15
2.2 实体元数据 16
第1章 简介 1
1.1 对象-关系映射 1
1.2 java持久化支持 7
1.2.1 专用解决方案 7
1.2.2 jdbc 7
1.2.3 企业javabean 8
1.2.4 java数据对象 8
1.3 为什么需要另一种标准 9
1.4 java持久化api 10
1.4.1 规范的历史 10
1.4.2 概述 11
1.5 本章小结 13
第2章 入门 14
2.1 实体概述 14
2.1.1 持久性 14
2.1.2 标识 15
2.1.3 事务性 15
2.1.4 粒度 15
2.2 实体元数据 16
前言回到顶部↑
令人难以置信的是,自从我们出版了针对JPA 1.0的第一本书Pro EJB 3.Java Persistence API以来,已经过去了三年。我们收到了许多非常精彩的评论和祝贺,在介绍其他内容之前,首先要感谢所有向我们表达意见的人。您对于本书的反馈具有非常大的价值,我们已经非常认真地对它们进行了回应。对于本书的第二个版本,我们希望同样也能从你们的反馈中获益。
我们选择重命名本书,因为显而易见JPA不再是EJB的子版本,同时因为JPA已经完全成熟,配得上自己的头衔。然而,这么做我们并非没有犹豫。我们并不希望让人们以为这本书只是关于JPA2.0,或者有些人以为不能选择它来学习JPA。我们确实尽力在JPA 2.0方面使之保持完整,并且仍然相信本书非常适合一个初学者学习JPA。对于你们中那些更有经验的人而言,或者购买并阅读了上一本书的人而言,我们已经设法保持了所有来自第1版的材料。然而,我们确实对它进行了一些重组,以对齐两个新的章节以及把关于附加功能的讨论更好地合并到其他章节中。
本书上一版的目标之一是尽可能地简单明了,但是不短缺。我们尽力调整了它的大小,从而只描述我们感觉值得讲述的内容,但是依然确保适合在您的行李中携带这本书,以便于您在公共汽车或火车上阅读。然而,为了能够保持我们在第1版中所有的材料,同时添加两个章节和更多的功能,这看起来确实像是苛求。注解引用成为了这个要求的受害者,因为我们不能为您在网上可以轻松找到的内容留下页面空间。我们希望在公共汽车和火车上的读者,或任何其他以脱机模式阅读的读者,不会因为我们在后面删除了它们而诅咒我们。
完成JPA 1.0规范花费了很长的时间,但是JPA 2.0花费了更长的时间。我们不确定这是否是因为第一轮留下的功能是最难以标准化的,或者仅仅是因为我们在第二轮没有高效地工作。不管什么原因,这是一个漫长的过程,但是我们终于获得了这个规范,其填补了JPA 1.0留下的许多空白。当人们可以开始使用它时,接下来将是有趣的部分。我们已经经历了决定如何以最好的方式将JPA 2.0展示给您的过程,并且希望您也会发现使用它的乐趣所在。
本书读者对象
本书的读者是开发人员、架构师、程序员和梦想家。同时,它也可用于教员和教师、研究人员和原型开发人员(prototyper)。它还可用于任何想要在企业中、在桌面或在Java平台运行和支持应用程序的任何位置使用持久化的人。我们没有假设您具有使用持久化产品的经验,但是假设您具有使用Java的一些经验,以及对JavaEE或J2EE平台有一些了解(虽然不一定有任何经验)。
在数据库中读取和存储对象的持久化API需要一些基本的数据库和SQL知识,虽然并不需要很全面。JDBC的经验也将会有帮助,但这不是严格要求的。
总体而言,如果您有几年软件开发的经验,那么您应该非常适合阅读本书和理解它所讨论的主题。
代码示例
我们已经试图尽可能地显示代码示例,因为通过一个代码示例演示通常会比花两段文字更容易解释。当然,这些文字段落将仍然存在,但是代码将有助于使它们更加的清晰。
代码示例往往不是完整的,因为我们不想使演示代码与实现细节有关。您将经常在代码示例中看到带省略号的注释,意味着因为我们觉得它们对问题不重要而省略了。同时,我们也尽力保持示例尽可能地简短以便节省宝贵的页面空间。
我们使用在第1版中的Employee(员工)模型。它的简单性和普遍性使其成为对初学者和高级用户而言都合适的模型。出于这个原因(并且我们认为只因为一个模型可能有一点点乏味,就创建一个全新的模型毫无意义),我们把Employee模型带到了这个版本中。我们没有在第一版巾得到关于它的任何抱怨,所以它可能是达到了目的,或者是因为它令人昏昏欲睡而懒得抱怨。
在这个示例中,所有的状态字段都被定义为私有访问的,虽然这不是规范所必需的。对我们而言,这不是严重的事情。它大多是由于在一个或两个示例中状态字段已经被定义为私有的,而后面其他的示例为了保持一致性而进行了相应的改变。
我们非常小心地确保本书将采取标准的代码示例,但是必须指出,在有些情况下,需要特定于供应商的名称或功能来解释特定于供应商的行为。当然,我们将使用Java EE 6应用服务器和Java持久化API的参考实现(Reference Implementation,RI)。Java EE 6 RI被称为Glassfish,它是一个完全开源的应用服务器,根据CDDL(Common Development and Distribution License,通用开发与分布许可证)方式使用。Java持久化API的RI称为EclipseLink,它是一个开源和可自由使用的Eclipse项目,其源自于商业上成功的OracleTopLink产品的代码库(code base)。GlassFish和EclipseLink都可以从java.net下载。
这些示例可以从Apress网站上下载。建议下载这些示例,并浏览它们的工作原理。查看和修改示例将帮助您领会JPA 2.0已经向完整的建模更进了一步。
我们选择重命名本书,因为显而易见JPA不再是EJB的子版本,同时因为JPA已经完全成熟,配得上自己的头衔。然而,这么做我们并非没有犹豫。我们并不希望让人们以为这本书只是关于JPA2.0,或者有些人以为不能选择它来学习JPA。我们确实尽力在JPA 2.0方面使之保持完整,并且仍然相信本书非常适合一个初学者学习JPA。对于你们中那些更有经验的人而言,或者购买并阅读了上一本书的人而言,我们已经设法保持了所有来自第1版的材料。然而,我们确实对它进行了一些重组,以对齐两个新的章节以及把关于附加功能的讨论更好地合并到其他章节中。
本书上一版的目标之一是尽可能地简单明了,但是不短缺。我们尽力调整了它的大小,从而只描述我们感觉值得讲述的内容,但是依然确保适合在您的行李中携带这本书,以便于您在公共汽车或火车上阅读。然而,为了能够保持我们在第1版中所有的材料,同时添加两个章节和更多的功能,这看起来确实像是苛求。注解引用成为了这个要求的受害者,因为我们不能为您在网上可以轻松找到的内容留下页面空间。我们希望在公共汽车和火车上的读者,或任何其他以脱机模式阅读的读者,不会因为我们在后面删除了它们而诅咒我们。
完成JPA 1.0规范花费了很长的时间,但是JPA 2.0花费了更长的时间。我们不确定这是否是因为第一轮留下的功能是最难以标准化的,或者仅仅是因为我们在第二轮没有高效地工作。不管什么原因,这是一个漫长的过程,但是我们终于获得了这个规范,其填补了JPA 1.0留下的许多空白。当人们可以开始使用它时,接下来将是有趣的部分。我们已经经历了决定如何以最好的方式将JPA 2.0展示给您的过程,并且希望您也会发现使用它的乐趣所在。
本书读者对象
本书的读者是开发人员、架构师、程序员和梦想家。同时,它也可用于教员和教师、研究人员和原型开发人员(prototyper)。它还可用于任何想要在企业中、在桌面或在Java平台运行和支持应用程序的任何位置使用持久化的人。我们没有假设您具有使用持久化产品的经验,但是假设您具有使用Java的一些经验,以及对JavaEE或J2EE平台有一些了解(虽然不一定有任何经验)。
在数据库中读取和存储对象的持久化API需要一些基本的数据库和SQL知识,虽然并不需要很全面。JDBC的经验也将会有帮助,但这不是严格要求的。
总体而言,如果您有几年软件开发的经验,那么您应该非常适合阅读本书和理解它所讨论的主题。
代码示例
我们已经试图尽可能地显示代码示例,因为通过一个代码示例演示通常会比花两段文字更容易解释。当然,这些文字段落将仍然存在,但是代码将有助于使它们更加的清晰。
代码示例往往不是完整的,因为我们不想使演示代码与实现细节有关。您将经常在代码示例中看到带省略号的注释,意味着因为我们觉得它们对问题不重要而省略了。同时,我们也尽力保持示例尽可能地简短以便节省宝贵的页面空间。
我们使用在第1版中的Employee(员工)模型。它的简单性和普遍性使其成为对初学者和高级用户而言都合适的模型。出于这个原因(并且我们认为只因为一个模型可能有一点点乏味,就创建一个全新的模型毫无意义),我们把Employee模型带到了这个版本中。我们没有在第一版巾得到关于它的任何抱怨,所以它可能是达到了目的,或者是因为它令人昏昏欲睡而懒得抱怨。
在这个示例中,所有的状态字段都被定义为私有访问的,虽然这不是规范所必需的。对我们而言,这不是严重的事情。它大多是由于在一个或两个示例中状态字段已经被定义为私有的,而后面其他的示例为了保持一致性而进行了相应的改变。
我们非常小心地确保本书将采取标准的代码示例,但是必须指出,在有些情况下,需要特定于供应商的名称或功能来解释特定于供应商的行为。当然,我们将使用Java EE 6应用服务器和Java持久化API的参考实现(Reference Implementation,RI)。Java EE 6 RI被称为Glassfish,它是一个完全开源的应用服务器,根据CDDL(Common Development and Distribution License,通用开发与分布许可证)方式使用。Java持久化API的RI称为EclipseLink,它是一个开源和可自由使用的Eclipse项目,其源自于商业上成功的OracleTopLink产品的代码库(code base)。GlassFish和EclipseLink都可以从java.net下载。
这些示例可以从Apress网站上下载。建议下载这些示例,并浏览它们的工作原理。查看和修改示例将帮助您领会JPA 2.0已经向完整的建模更进了一步。
序言回到顶部↑
2006年,当Java持久化API首次作为EJB 3.0的一部分发布时,很快它就成为Java EE 5中最激动人心的技术之一。如同EJB 3.0一样,作为EJB 3.0一部分的JPA 1.0也同时侧重于功能性和易用性两个方面,通过Java语言注解以及合理的默认值为配置提供方便。
然而,JPA 1.0并不仅仅是早期EJB版本中重量级实体bean组件的一个急需的替换品,虽然这是其最初存在的原因。同时,它也作为一种更为通用的对象关系映射工具,迅速地得到了认可,并且也得到了扩展,以满足在Java SE环境以及其他Java EE容器类型中使用它的请求。作为一个“规范中的规范”,它最终在发布时,已经比其“父版本”更加完善。
除了查询语言之外,从JPA的核心功能中很难发现它起初是作为EJB 3.0工作的一部分。当然,JPA的真正起源在于对象关系映射的产品和项目,如TopLink(10周年刚过)、Hibernate和JDO,这些产品的许多首席架构师(如Mike Keith)都已经成为了JPA的主要贡献者。
然而,JPA 1.0仅仅表示了EJB 3.0专家组工作(和工作量)的一方面,而且,虽然它涵盖了O/R映射所需的核心功能,但是相比于为其提供原始实现的许多产品和项目,它并不是与它们几乎一样完整的API。
JPA 2.0的任务是巩固标准、扩大范围,从而为开发人员提供关于简单和复杂应用程序的更好的可移植性。像JPA 1.0一样,它由该领域中已经存在的技术经验所驱动,并且由社区成员的请求所引导。
在这个版本中,JPA 2.0规范和API的大小都翻倍了。它附加的内容包括为Java开发人员提供了许多自然的建模结构的支持、扩展的标准化映射选项、基于对象的条件查询API、元模型API、支持自动验证以及支持悲观锁定等。
在本书中,Mike Keith和Merrick Schincariol给出了对Java持久化API的全面指南。作为作者,他们在O/R映射技术方面都具有相当丰富的经验,同时,Mike还具有建设JPA 本身的多年经验。
本书涵盖了Java持久化API的所有方面。它既全面又易于理解,同时还兼具趣味性和严格性。它不仅向读者介绍了API的各个方面,讨论了如何以最有效的方式使用API的各个部分,而且还解释了隐藏的内部原理,以及如何避免当使用不同的供应商实现时的可移植性陷阱。贯穿本书,作者仔细地解释了对象关系映射的工作原理,从而使读者不仅可了解Java持久性功能的相关知识,而且还可以深入地理解它的工作原理。希望您会喜欢它。
Linda DeMichiel
Specification Lead, Java Persistence 2.0
Sun Microsystems
Santa Clara, California
然而,JPA 1.0并不仅仅是早期EJB版本中重量级实体bean组件的一个急需的替换品,虽然这是其最初存在的原因。同时,它也作为一种更为通用的对象关系映射工具,迅速地得到了认可,并且也得到了扩展,以满足在Java SE环境以及其他Java EE容器类型中使用它的请求。作为一个“规范中的规范”,它最终在发布时,已经比其“父版本”更加完善。
除了查询语言之外,从JPA的核心功能中很难发现它起初是作为EJB 3.0工作的一部分。当然,JPA的真正起源在于对象关系映射的产品和项目,如TopLink(10周年刚过)、Hibernate和JDO,这些产品的许多首席架构师(如Mike Keith)都已经成为了JPA的主要贡献者。
然而,JPA 1.0仅仅表示了EJB 3.0专家组工作(和工作量)的一方面,而且,虽然它涵盖了O/R映射所需的核心功能,但是相比于为其提供原始实现的许多产品和项目,它并不是与它们几乎一样完整的API。
JPA 2.0的任务是巩固标准、扩大范围,从而为开发人员提供关于简单和复杂应用程序的更好的可移植性。像JPA 1.0一样,它由该领域中已经存在的技术经验所驱动,并且由社区成员的请求所引导。
在这个版本中,JPA 2.0规范和API的大小都翻倍了。它附加的内容包括为Java开发人员提供了许多自然的建模结构的支持、扩展的标准化映射选项、基于对象的条件查询API、元模型API、支持自动验证以及支持悲观锁定等。
在本书中,Mike Keith和Merrick Schincariol给出了对Java持久化API的全面指南。作为作者,他们在O/R映射技术方面都具有相当丰富的经验,同时,Mike还具有建设JPA 本身的多年经验。
本书涵盖了Java持久化API的所有方面。它既全面又易于理解,同时还兼具趣味性和严格性。它不仅向读者介绍了API的各个方面,讨论了如何以最有效的方式使用API的各个部分,而且还解释了隐藏的内部原理,以及如何避免当使用不同的供应商实现时的可移植性陷阱。贯穿本书,作者仔细地解释了对象关系映射的工作原理,从而使读者不仅可了解Java持久性功能的相关知识,而且还可以深入地理解它的工作原理。希望您会喜欢它。
Linda DeMichiel
Specification Lead, Java Persistence 2.0
Sun Microsystems
Santa Clara, California
媒体评论回到顶部↑
令人难以置信的是,自从初始的Java持久化API 1.0版本发布以来,已经过去了三年。此间,我们目睹了它由成熟的API转变成主流的持久化标准。与此同时,许多读者使用本书的上一个版本作为掌握JPA的起点,很高兴我们在此过程中对您有所帮助!
JPA 2.0包括了一系列新特性,例如,其他的对象关系映射、更灵活的对象建模、类型化查询以及崭新的条件API等。由于有很多内容需要讨论,因此我们很兴奋能够更新其内容,解释所有新特性,而且还包括了一些提示和技巧来帮助您在实践中使用API。
如果您已经具备使用JPA 1.0的经验,那么应该能够从在JPA2.0中添加一个新特性时所指出的版本提示中获益。这些提示旨在帮助用户编写一个JPA 1.0实现,但还不能使用2.0特性。
对于JPA新手来说,大可不必担心会被遗忘。我们依然坚持最初的意图:把没有任何JPA基础的人训练成JPA高级开发人员。在《Pro JPA 2中文版:精通Java持久化API》的前两章中,您应该能够快速掌握入门所需的知识(资深的JPA编程人员可以从第3章开始)。最后,我们要表示感谢,因为是您使得本书的上一个版本如此成功。我们非常高兴它已经成为JPA开发人员的主要参考资源,希望您能够发现《Pro JPA 2中文版:精通Java持久化API》具有同样的价值。
Mike Keith(JPA2.0专家组成员)和Merrick Schincariol
JPA 2.0包括了一系列新特性,例如,其他的对象关系映射、更灵活的对象建模、类型化查询以及崭新的条件API等。由于有很多内容需要讨论,因此我们很兴奋能够更新其内容,解释所有新特性,而且还包括了一些提示和技巧来帮助您在实践中使用API。
如果您已经具备使用JPA 1.0的经验,那么应该能够从在JPA2.0中添加一个新特性时所指出的版本提示中获益。这些提示旨在帮助用户编写一个JPA 1.0实现,但还不能使用2.0特性。
对于JPA新手来说,大可不必担心会被遗忘。我们依然坚持最初的意图:把没有任何JPA基础的人训练成JPA高级开发人员。在《Pro JPA 2中文版:精通Java持久化API》的前两章中,您应该能够快速掌握入门所需的知识(资深的JPA编程人员可以从第3章开始)。最后,我们要表示感谢,因为是您使得本书的上一个版本如此成功。我们非常高兴它已经成为JPA开发人员的主要参考资源,希望您能够发现《Pro JPA 2中文版:精通Java持久化API》具有同样的价值。
Mike Keith(JPA2.0专家组成员)和Merrick Schincariol
【插图】







点击看大图

加载中...
