diff --git a/README.adoc b/README.adoc index 93809fc85..8a5d46118 100644 --- a/README.adoc +++ b/README.adoc @@ -10,13 +10,14 @@ This means that it does rather little out of the box. But it offers plenty of pl == Maven Coordinates -```xml +[source,xml] +---- org.springframework.data spring-data-jdbc 1.0.0.BUILD-SNAPSHOT -``` +---- == Features @@ -24,31 +25,37 @@ This means that it does rather little out of the box. But it offers plenty of pl In order use Spring Data JDBC you need the following: - 1. An entity with an attribute marked as _id_ using the spring datas https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/annotation/Id.html[`@Id`] annotation. - - public class Person { - @Id - Integer id; - } - - 2. A repository - - public interface PersonRepository extends CrudRepository {} - - 3. Add `@EnableJdbcRepositories` to your application context configuration. - - 4. Make sure your application context contains a bean of type `DataSource`. +1. An entity with an attribute marked as _id_ using the spring datas https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/annotation/Id.html[`@Id`] annotation. ++ +[source,java] +---- + public class Person { + @Id + Integer id; + } +---- ++ +1. A repository ++ +[source,java] +---- +public interface PersonRepository extends CrudRepository {} +---- ++ +1. Add `@EnableJdbcRepositories` to your application context configuration. +1. Make sure your application context contains a bean of type `DataSource`. Now you can get an instance of the repository interface injected into your beans and use it: -```java - @Autowired - private PersonRepository repository; +[source,java] +---- +@Autowired +private PersonRepository repository; - public void someMethod() { - Person person = repository.save(new Person()); - } -``` +public void someMethod() { + Person person = repository.save(new Person()); +} +---- === Id generation @@ -74,39 +81,40 @@ You can tweak that by providing a https://github.com/spring-projects/spring-data Spring Data Jdbc triggers events which will get publish to any matching `ApplicationListener` in the application context. For example the following listener will get invoked before an aggregate gets saved. -``` java - @Bean - public ApplicationListener timeStampingSaveTime() { - - return event -> { - - Object entity = event.getEntity(); - if (entity instanceof Category) { - Category category = (Category) entity; - category.timeStamp(); - } - }; - } -``` +[source,java] +---- +@Bean +public ApplicationListener timeStampingSaveTime() { + + return event -> { + + Object entity = event.getEntity(); + if (entity instanceof Category) { + Category category = (Category) entity; + category.timeStamp(); + } + }; +} +---- .Available events |=== -| Type | Published ... - -| https://github.com/spring-projects/spring-data-jdbc/blob/master/src/main/java/org/springframework/data/jdbc/mapping/event/AfterDelete.java[`AfterDelete`] -| after an aggregate root got deleted. +| Event | When It's Published -| https://github.com/spring-projects/spring-data-jdbc/blob/master/src/main/java/org/springframework/data/jdbc/mapping/event/BeforeDelete.java[`BeforeDelete`], +| https://github.com/spring-projects/spring-data-jdbc/blob/master/src/main/java/org/springframework/data/jdbc/mapping/event/BeforeDelete.java[`BeforeDelete`] | before an aggregate root gets deleted. -| https://github.com/spring-projects/spring-data-jdbc/blob/master/src/main/java/org/springframework/data/jdbc/mapping/event/AfterSave.java[`AfterSave`], -| after an aggregate root gets saved, i.e. inserted or updated. +| https://github.com/spring-projects/spring-data-jdbc/blob/master/src/main/java/org/springframework/data/jdbc/mapping/event/AfterDelete.java[`AfterDelete`] +| after an aggregate root got deleted. -| https://github.com/spring-projects/spring-data-jdbc/blob/master/src/main/java/org/springframework/data/jdbc/mapping/event/AfterDelete.java[`BeforeSave`], +| https://github.com/spring-projects/spring-data-jdbc/blob/master/src/main/java/org/springframework/data/jdbc/mapping/event/AfterDelete.java[`BeforeSave`] | before an aggregate root gets saved, i.e. inserted or updated but after the decision was made if it will get updated or deleted. The event has a reference to an https://github.com/spring-projects/spring-data-jdbc/blob/master/src/main/java/org/springframework/data/jdbc/core/conversion/AggregateChange.java[`AggregateChange`] instance. The instance can be modified by adding or removing https://github.com/spring-projects/spring-data-jdbc/blob/master/src/main/java/org/springframework/data/jdbc/core/conversion/DbAction.java[`DbAction`]s. +| https://github.com/spring-projects/spring-data-jdbc/blob/master/src/main/java/org/springframework/data/jdbc/mapping/event/AfterSave.java[`AfterSave`] +| after an aggregate root gets saved, i.e. inserted or updated. + | https://github.com/spring-projects/spring-data-jdbc/blob/master/src/main/java/org/springframework/data/jdbc/mapping/event/AfterDelete.java[`AfterCreation`] | after an aggregate root got created from a database `ResultSet` and all it's property set |===