The general name under which these new databases have become grouped is “NoSQL
databases.” In retrospect, this name, while catchy, isn’t very accurate because it seems
to imply that you can’t query the database, which isn’t true. It reflects the basic shift
away from the relational data model as well as a general shift away from ACID (atom-
icity, consistency, isolation, durability) characteristics of relational databases.
One of the driving factors for the shift away from ACID characteristics is the emergence
of applications that place a higher priority on scaling writes and having a partially
functioning system even when parts of the system have failed. While scaling reads in a
relational database can be achieved through the use of in-memory caches that front the
database, scaling writes is much harder. To put a label on it, these new applications
favor a system that has so-called “BASE” semantics, where the acronym represents
basically available, scalable, eventually consistent. Distributed data grids with a key/
value data model generally have not been grouped into this new wave of NoSQL da-
tabases. However, they offer similar features to NoSQL databases in terms of the scale
of data they can handle as well as distributed computation features that colocate com-
puting power and data.
As you can see from this brief introduction to the new data access landscape, there is
a revolution taking place, which for data geeks is quite exciting. Relational databases
are not dead; they are still central to the operation of many enterprises and will remain
so for quite some time. The trends, though, are very clear: new data access technologies
are solving problems that traditional relational databases can’t, so we need to broaden
our skill set as developers and have a foot in both camps.
The Spring Framework has a long history of simplifying the development of Java ap-
plications, in particular for writing RDBMS-based data access layers that use Java
database connectivity (JDBC) or object-relational mappers. In this book we aim to help
developers get a handle on how to effectively develop Java applications across a wide
range of these new technologies. The Spring Data project directly addresses these new
technologies so that you can extend your existing knowledge of Spring to them, or
perhaps learn more about Spring as a byproduct of using Spring Data. However, it
doesn’t leave the relational database behind. Spring Data also provides an extensive set
of new features to Spring’s RDBMS support.
How to Read This Book
This book is intended to give you a hands-on introduction to the Spring Data project,
whose core mission is to enable Java developers to use state-of-the-art data processing
and manipulation tools but also use traditional databases in a state-of-the-art manner.
We’ll start by introducing you to the project, outlining the primary motivation of
SpringSource and the team. We’ll also describe the domain model of the sample
projects that accommodate each of the later chapters, as well as how to access and set
up the code (Chapter 1).
Preface | xvii