我们生活在一个很有意思的时代,新的业务流程驱动着新的需求。我们以前认为理所应当的事情正面临着被颠覆的威胁──其中有一条就是关系型数据库是实现持久化的默认可选方案。尽管这个理念还被广泛认可,但是对于如何更高效地适应新世界,还远远没有明晰。
众多可选的数据存储方案导致了碎片化。Java开发人员以前会将应用中的数据存储到关系型数据库之中,相对于此,新的存储形式需要开发者付出更多的努力才行。
本书将会帮助你解决这个现实问题。它能够帮助你全面了解当前的硬件条件下存储领域的现状,并阐述对于现代的业务问题,NoSQL为什么那么重要。
由于保守的企业级市场对语言的认同度较低(也可能是因为Java对象-关系映射(ORM)解决方案的复杂性),Java开发人员传统上往往不会涉及到NoSQL领域。还好,现在状况发生了变化,进而产生了这本重要和及时的图书。Spring Data是一个重要的项目,它能够帮助开发人员征服新的挑战。
Spring带来了众多价值,因此其成为企业级Java开发人员首选的平台,在持久化方案碎片化的现状下它能够带来特殊的收益。Spring所提供的一部分价值就在于能够以一致的方式集成不同的技术(并不会将所有人拉低到一个最低的通用标准)。独特的“Spring方式(Spring way)”有助于降低开发人员的学习曲线并简化代码的维护。如果你已经熟悉Spring,就会发现Spring Data能够帮助你探索和采用并不是非常熟悉的数据存储形式。如果你对Spring还不熟悉的话,这是一个很好的机会去了解Spring如何简化代码并使其保持更加一致。
本书作者是最有资格阐述Spring Data的人,因为他们就是项目的领导者。他们对Spring有深刻的了解,同时将多种现代数据存储紧密结合了起来。他们很好地阐述了Spring Data背后的驱动力以及如何延续Spring一贯的数据访问方式。另外,本书涵盖了Spring Data如何与其他Spring组成部分协同工作这部分内容,如Spring Integration和Spring Batch。书中还提供了除Spring之外其他很有意义的内容,如Repository的理念、类型安全查询的优点以及为什么Java持久化API(Java Persistence API,JPA)并不适合作为通用的数据访问解决方案。
尽管本书主要讨论的是数据访问而不是NoSQL的使用,但是你也会发现很有价值的NoSQL资料,因为它所介绍的概念和代码可能是你并不熟悉的。所有的内容都是最新的,重要的内容包括文档数据库、图数据库、键/值存储、Hadoop以及Gemfire数据结构。
我们这些编程人员通常追求实用,并且亲手实践时能够学得更好。因此,本书充分考虑到了实用性。在开始的时候,作者首先介绍了如何在业界领先的集成开发环境(Integrated Development Environment,IDE)中运行示例代码,甚至包含了方便学习的屏幕截图,还阐述了数据库驱动方面的需求以及数据库的基本安装过程。他们将代码托管在了GitHub上,这一点我很赞赏,这样每个人都可以对其进行访问和浏览。本书涵盖了众多的主题,所以要设计良好的样例,以便将所有内容尽量关联起来。
本书有一章介绍了Spring Roo,这也能够证明他们是非常重视实际开发的,Spring Roo是Spring提供的快速应用开发(Rapid Application Development,RAD)解决方案。大多数Roo的用户已经熟悉如何将其用于传统的JPA架构之中,作者展示了Roo所带来的生产率提升不仅限于关系型数据库。
读完本书之后,你会深刻理解现代的数据访问为何更加专门化和碎片化、NoSQL数据存储的主要分类、Spring Data如何帮助Java开发人员在新的环境下高效工作以及对于感兴趣的话题要到什么地方去寻找深入学习的资料。但最为重要的是,这是探索代码的绝佳起点。
Rod Johnson
Spring框架创始人