diff --git a/jdbc/basics/pom.xml b/jdbc/basics/pom.xml
index a85b176a..2288bdbf 100644
--- a/jdbc/basics/pom.xml
+++ b/jdbc/basics/pom.xml
@@ -1,5 +1,6 @@
-
+
4.0.0
spring-data-jdbc-basics
@@ -13,20 +14,17 @@
Spring Data JDBC - Basic usage examples
Sample project demonstrating Spring Data JDBC features
-
+
org.springframework.boot
spring-boot-starter-web
-
-
org.springframework.data
spring-data-jdbc
- 1.1.0.BUILD-SNAPSHOT
-
\ No newline at end of file
+
diff --git a/jdbc/basics/src/main/java/example/springdata/jdbc/basics/simpleentity/CategoryConfiguration.java b/jdbc/basics/src/main/java/example/springdata/jdbc/basics/simpleentity/CategoryConfiguration.java
index 74bca453..3f75e65c 100644
--- a/jdbc/basics/src/main/java/example/springdata/jdbc/basics/simpleentity/CategoryConfiguration.java
+++ b/jdbc/basics/src/main/java/example/springdata/jdbc/basics/simpleentity/CategoryConfiguration.java
@@ -16,28 +16,16 @@
package example.springdata.jdbc.basics.simpleentity;
import org.springframework.context.ApplicationEvent;
-import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
-import org.springframework.data.jdbc.core.DataAccessStrategy;
-import org.springframework.data.jdbc.core.DefaultDataAccessStrategy;
-import org.springframework.data.jdbc.core.JdbcAggregateOperations;
-import org.springframework.data.jdbc.core.JdbcAggregateTemplate;
-import org.springframework.data.jdbc.core.SqlGeneratorSource;
+import org.springframework.data.jdbc.repository.config.AbstractJdbcConfiguration;
import org.springframework.data.jdbc.repository.config.EnableJdbcRepositories;
-import org.springframework.data.jdbc.repository.config.JdbcConfiguration;
-import org.springframework.data.relational.core.conversion.RelationalConverter;
-import org.springframework.data.relational.core.mapping.RelationalMappingContext;
-import org.springframework.data.relational.core.mapping.event.BeforeSaveEvent;
+import org.springframework.data.relational.core.mapping.event.BeforeSaveCallback;
import org.springframework.data.relational.core.mapping.event.RelationalEvent;
-import org.springframework.jdbc.core.JdbcOperations;
-import org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations;
-import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
/**
- * Contains infrastructure necessary for creating repositories and two listeners.
+ * Contains infrastructure necessary for creating repositories, listeners and EntityCallbacks.
*
* Not that a listener may change an entity without any problem.
*
@@ -46,9 +34,11 @@ import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
*/
@Configuration
@EnableJdbcRepositories
-@Import(JdbcConfiguration.class)
-public class CategoryConfiguration {
+public class CategoryConfiguration extends AbstractJdbcConfiguration {
+ /**
+ * @return {@link ApplicationListener} for {@link RelationalEvent}s.
+ */
@Bean
public ApplicationListener> loggingListener() {
@@ -59,24 +49,17 @@ public class CategoryConfiguration {
};
}
+ /**
+ * @return {@link BeforeSaveCallback} for {@link Category}.
+ */
@Bean
- public ApplicationListener timeStampingSaveTime() {
+ public BeforeSaveCallback timeStampingSaveTime() {
- return event -> {
+ return (entity, aggregateChange) -> {
- Object entity = event.getEntity();
+ entity.timeStamp();
- if (entity instanceof Category) {
- Category category = (Category) entity;
- category.timeStamp();
- }
+ return entity;
};
}
-
- // the following bean definitions are only necessary for providing JdbcAggregateOperations for injection into WithInsertImpl.
- @Bean
- public NamedParameterJdbcOperations namedParameterJdbcOperations(JdbcOperations operations) {
- return new NamedParameterJdbcTemplate(operations);
- }
-
}
diff --git a/jdbc/basics/src/main/java/example/springdata/jdbc/basics/simpleentity/WithInsert.java b/jdbc/basics/src/main/java/example/springdata/jdbc/basics/simpleentity/WithInsert.java
index dbe42152..66faeecd 100644
--- a/jdbc/basics/src/main/java/example/springdata/jdbc/basics/simpleentity/WithInsert.java
+++ b/jdbc/basics/src/main/java/example/springdata/jdbc/basics/simpleentity/WithInsert.java
@@ -16,8 +16,17 @@
package example.springdata.jdbc.basics.simpleentity;
/**
+ * Fragment interface providing the {@link WithInsert#insert(Object)} signature.
+ *
* @author Jens Schauder
*/
public interface WithInsert {
+
+ /**
+ * Custom insert method.
+ *
+ * @param t
+ * @return
+ */
T insert(T t);
}
diff --git a/jdbc/basics/src/main/java/example/springdata/jdbc/basics/simpleentity/WithInsertImpl.java b/jdbc/basics/src/main/java/example/springdata/jdbc/basics/simpleentity/WithInsertImpl.java
index 124ca720..207f9172 100644
--- a/jdbc/basics/src/main/java/example/springdata/jdbc/basics/simpleentity/WithInsertImpl.java
+++ b/jdbc/basics/src/main/java/example/springdata/jdbc/basics/simpleentity/WithInsertImpl.java
@@ -15,17 +15,20 @@
*/
package example.springdata.jdbc.basics.simpleentity;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jdbc.core.JdbcAggregateTemplate;
-import org.springframework.data.relational.core.mapping.event.WithId;
/**
+ * Fragment implementation providing the {@link WithInsert#insert(Object)} implementation.
+ *
* @author Jens Schauder
*/
public class WithInsertImpl implements WithInsert {
- @Autowired
- JdbcAggregateTemplate template;
+ private final JdbcAggregateTemplate template;
+
+ public WithInsertImpl(JdbcAggregateTemplate template) {
+ this.template = template;
+ }
@Override
public T insert(T t) {