diff --git a/pom.xml b/pom.xml
index 3d53c917f4..f74bc70751 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.data
spring-data-relational-parent
- 1.1.0.BUILD-SNAPSHOT
+ 1.1.0.DATAJDBC-329-SNAPSHOT
pom
Spring Data Relational Parent
diff --git a/spring-data-jdbc-distribution/pom.xml b/spring-data-jdbc-distribution/pom.xml
index 1753776a73..f54b2e9f19 100644
--- a/spring-data-jdbc-distribution/pom.xml
+++ b/spring-data-jdbc-distribution/pom.xml
@@ -14,7 +14,7 @@
org.springframework.data
spring-data-relational-parent
- 1.1.0.BUILD-SNAPSHOT
+ 1.1.0.DATAJDBC-329-SNAPSHOT
../pom.xml
diff --git a/spring-data-jdbc/pom.xml b/spring-data-jdbc/pom.xml
index 9458230173..edfb06ca84 100644
--- a/spring-data-jdbc/pom.xml
+++ b/spring-data-jdbc/pom.xml
@@ -5,7 +5,7 @@
4.0.0
spring-data-jdbc
- 1.1.0.BUILD-SNAPSHOT
+ 1.1.0.DATAJDBC-329-SNAPSHOT
Spring Data JDBC
Spring Data module for JDBC repositories.
@@ -14,7 +14,7 @@
org.springframework.data
spring-data-relational-parent
- 1.1.0.BUILD-SNAPSHOT
+ 1.1.0.DATAJDBC-329-SNAPSHOT
diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/BasicJdbcConverter.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/BasicJdbcConverter.java
index 24f9530f23..083676a3b5 100644
--- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/BasicJdbcConverter.java
+++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/BasicJdbcConverter.java
@@ -38,7 +38,7 @@
* @see SimpleTypeHolder
* @see CustomConversions
*/
-public class BasicJdbcConverter extends BasicRelationalConverter {
+public class BasicJdbcConverter extends BasicRelationalConverter implements JdbcConverter {
/**
* Creates a new {@link BasicRelationalConverter} given {@link MappingContext}.
diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/JdbcConverter.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/JdbcConverter.java
new file mode 100644
index 0000000000..2d460ed54f
--- /dev/null
+++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/JdbcConverter.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2019 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.data.jdbc.core.convert;
+
+import org.springframework.data.relational.core.conversion.RelationalConverter;
+
+/**
+ * A {@link JdbcConverter} is responsible for converting for values to the native relational representation and vice
+ * versa.
+ *
+ * @author Jens Schauder
+ *
+ * @since 1.1
+ */
+public interface JdbcConverter extends RelationalConverter {}
diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/config/AbstractJdbcConfiguration.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/config/AbstractJdbcConfiguration.java
new file mode 100644
index 0000000000..db717dd323
--- /dev/null
+++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/config/AbstractJdbcConfiguration.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2017-2019 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.data.jdbc.repository.config;
+
+import java.util.Optional;
+
+import org.springframework.context.ApplicationEventPublisher;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.convert.converter.Converter;
+import org.springframework.data.jdbc.core.DataAccessStrategy;
+import org.springframework.data.jdbc.core.DefaultDataAccessStrategy;
+import org.springframework.data.jdbc.core.JdbcAggregateTemplate;
+import org.springframework.data.jdbc.core.SqlGeneratorSource;
+import org.springframework.data.jdbc.core.convert.BasicJdbcConverter;
+import org.springframework.data.jdbc.core.convert.JdbcConverter;
+import org.springframework.data.jdbc.core.convert.JdbcCustomConversions;
+import org.springframework.data.jdbc.core.mapping.JdbcMappingContext;
+import org.springframework.data.relational.core.conversion.RelationalConverter;
+import org.springframework.data.relational.core.mapping.NamingStrategy;
+import org.springframework.data.relational.core.mapping.RelationalMappingContext;
+import org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations;
+
+/**
+ * Beans that must be registered for Spring Data JDBC to work.
+ *
+ * @author Greg Turnquist
+ * @author Jens Schauder
+ * @author Mark Paluch
+ * @author Michael Simons
+ * @author Christoph Strobl
+ * @since 1.1
+ */
+@Configuration
+public abstract class AbstractJdbcConfiguration {
+
+ /**
+ * Register a {@link RelationalMappingContext} and apply an optional {@link NamingStrategy}.
+ *
+ * @param namingStrategy optional {@link NamingStrategy}. Use {@link NamingStrategy#INSTANCE} as fallback.
+ * @return must not be {@literal null}.
+ */
+ @Bean
+ public JdbcMappingContext jdbcMappingContext(Optional namingStrategy) {
+
+ JdbcMappingContext mappingContext = new JdbcMappingContext(namingStrategy.orElse(NamingStrategy.INSTANCE));
+ mappingContext.setSimpleTypeHolder(jdbcCustomConversions().getSimpleTypeHolder());
+
+ return mappingContext;
+ }
+
+ /**
+ * Creates a {@link RelationalConverter} using the configured {@link #jdbcMappingContext(Optional)}. Will get
+ * {@link #jdbcCustomConversions()} applied.
+ *
+ * @see #jdbcMappingContext(Optional)
+ * @see #jdbcCustomConversions()
+ * @return must not be {@literal null}.
+ */
+ @Bean
+ public JdbcConverter relationalConverter(RelationalMappingContext mappingContext) {
+ return new BasicJdbcConverter(mappingContext, jdbcCustomConversions());
+ }
+
+ /**
+ * Register custom {@link Converter}s in a {@link JdbcCustomConversions} object if required. These
+ * {@link JdbcCustomConversions} will be registered with the {@link #relationalConverter(RelationalMappingContext)}.
+ * Returns an empty {@link JdbcCustomConversions} instance by default.
+ *
+ * @return must not be {@literal null}.
+ */
+ @Bean
+ public JdbcCustomConversions jdbcCustomConversions() {
+ return new JdbcCustomConversions();
+ }
+
+ /**
+ * Register a {@link JdbcAggregateTemplate} as a bean for easy use in applications that need a lower level of
+ * abstraction than the normal repository abstraction.
+ *
+ * @param publisher for publishing events. Must not be {@literal null}.
+ * @param context the mapping context to be used. Must not be {@literal null}.
+ * @param converter the conversions used when reading and writing from/to the database. Must not be {@literal null}.
+ * @param operations {@link NamedParameterJdbcOperations} used for accessing the database. Must not be
+ * {@literal null}.
+ * @return a {@link JdbcAggregateTemplate}. Guaranteed to be not {@literal null}.
+ */
+ @Bean
+ public JdbcAggregateTemplate jdbcAggregateTemplate(ApplicationEventPublisher publisher,
+ RelationalMappingContext context, RelationalConverter converter, NamedParameterJdbcOperations operations) {
+
+ DataAccessStrategy dataAccessStrategy = new DefaultDataAccessStrategy(new SqlGeneratorSource(context), context,
+ converter, operations);
+ return new JdbcAggregateTemplate(publisher, context, converter, dataAccessStrategy);
+ }
+}
diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/config/EnableJdbcRepositories.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/config/EnableJdbcRepositories.java
index 69957eea5f..152520795a 100644
--- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/config/EnableJdbcRepositories.java
+++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/config/EnableJdbcRepositories.java
@@ -35,7 +35,7 @@
* @author Greg Turnquist
* @author Mark Paluch
* @author Fei Dong
- * @see JdbcConfiguration
+ * @see AbstractJdbcConfiguration
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/config/JdbcConfiguration.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/config/JdbcConfiguration.java
index e1f349e858..31ade20c78 100644
--- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/config/JdbcConfiguration.java
+++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/config/JdbcConfiguration.java
@@ -42,8 +42,11 @@
* @author Mark Paluch
* @author Michael Simons
* @author Christoph Strobl
+ *
+ * @deprecated Use {@link AbstractJdbcConfiguration} instead.
*/
@Configuration
+@Deprecated
public class JdbcConfiguration {
/**
@@ -53,7 +56,7 @@ public class JdbcConfiguration {
* @return must not be {@literal null}.
*/
@Bean
- public JdbcMappingContext jdbcMappingContext(Optional namingStrategy) {
+ public RelationalMappingContext jdbcMappingContext(Optional namingStrategy) {
JdbcMappingContext mappingContext = new JdbcMappingContext(namingStrategy.orElse(NamingStrategy.INSTANCE));
mappingContext.setSimpleTypeHolder(jdbcCustomConversions().getSimpleTypeHolder());
diff --git a/spring-data-relational/pom.xml b/spring-data-relational/pom.xml
index 11e7db737c..8a55670c53 100644
--- a/spring-data-relational/pom.xml
+++ b/spring-data-relational/pom.xml
@@ -5,7 +5,7 @@
4.0.0
spring-data-relational
- 1.1.0.BUILD-SNAPSHOT
+ 1.1.0.DATAJDBC-329-SNAPSHOT
Spring Data Relational
Spring Data Relational support
@@ -13,7 +13,7 @@
org.springframework.data
spring-data-relational-parent
- 1.1.0.BUILD-SNAPSHOT
+ 1.1.0.DATAJDBC-329-SNAPSHOT