Spring Data JDBC

Spring Data JDBC, part of the larger Spring Data family, makes it easy to easily implement JDBC based repositories. This module deals with enhanced support for JDBC based data access layers. It makes it easier to build Spring-powered applications that use data access technologies.

Quick Start
Fork me on GitHub

This is NOT an ORM

Spring Data JDBC does not try to be an ORM. It is not a competitor to JPA. Instead it is more of a construction kit for your personal ORM that you can define the way you like or need it.

This means that it does rather little out of the box. But it offers plenty of places where you can put your own logic, or integrate it with the technology of your choice for generating SQL statements.

The Aggregate Root

Spring Data repositories are inspired by the repository as described in the book Domain Driven Design by Eric Evans. One consequence of this is that you should have a repository per Aggregate Root. Aggregate Root is another concept from the same book and describes an entity which controls the lifecycle of other entities which together are an Aggregate. An Aggregate is a subset of your model which is consistent between method calls to your Aggregate Root.

Spring Data JDBC tries its best to encourage modelling your domain along these ideas.


  • CRUD operations for simple aggregates with customizable NamingStrategy.
  • Support for @Query annotations.
  • Support for MyBatis queries.
  • Events.
  • JavaConfig based repository configuration by introducing @EnableJdbcRepositories.

Quick Start


The recommended way to get started using spring-data-jdbc in your project is with a dependency management system – the snippet below can be copied and pasted into your build. Need help? See our getting started guides on building with Maven and Gradle.

Sample Projects