The primary goal of the Spring Data project is to make it easier to build Spring-powered applications that use data access technologies. Spring Data JDBC offers the popular Repository abstraction based on JDBC.
It aims at being conceptually easy. In order to achieve this it does NOT offer caching, lazy loading, write behind or many other features of JPA. This makes Spring Data JDBC a simple, limited, opinionated ORM.
-
Implementation of CRUD methods for Aggregates.
-
@Query
annotation -
Support for transparent auditing (created, last changed)
-
Events for persistence events
-
Possibility to integrate custom repository code
-
JavaConfig based repository configuration by introducing
EnableJdbcRepository
-
Integration with MyBatis
If you are new to Spring Data JDBC read the following two articles "Introducing Spring Data JDBC" and "Spring Data JDBC, References, and Aggregates"
There are also examples in the Spring Data Examples project.
A very good source of information is the source code in this repository.
Especially the integration tests (if you are reading this on GitHub, type t
and then IntegrationTests.java
)
We are keeping an eye on the spring-data-jdbc tag on Stack Overflow.
If you think you found a bug, or have a feature request, please create a ticket in our issue tracker.
Fast running tests can be executed with a simple
mvn test
This will execute unit tests and integration tests using an in-memory database.
In order to run the integration tests against a specific database, you need to have a local Docker installation available, and then execute:
mvn verify -Dspring.profiles.active=<databasetype>
This will also execute the unit tests.
Currently, the following databasetypes are available:
-
hsql (default, does not require a running database)
-
mysql
-
mariadb
-
postgres
-
mariadb
-
mssql
-
oracle
-
db2
Testing with Microsoft SQL Server and IBM DB2 requires you to accept the EULA of the respective Docker image so that the build may download and run it for you.
In order to accept the EULA, please add a file named container-license-acceptance.txt
to the classpath, i.e. src/test/resources
containing the name of the docker images.
At the time of this writing this would be
mcr.microsoft.com/mssql/server:2022-latest
ibmcom/db2:11.5.7.0a