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