Introduce caching for configured RowMapper/ResultSetExtractor.
We now create RowMapper/ResultSetExtractor instances only once if they are considered static configuration.
A configured RowMapper ref/class is always static.
A configured ResultSetExtractor ref/class is static when the extractor does not accept a RowMapper or if the RowMapper is configured.
Default mappers or projection-specific ones require ResultSetExtractor recreation of the ResultSetExtractor is configured as Class.
Reuse TypeInformation as much as possible to avoid Class -> TypeInformation conversion.
Introduce LRU cache for DefaultAggregatePath to avoid PersistentPropertyPath lookups.
Introduce best-effort quoted cache for SqlIdentifier to avoid excessive string object creation.
Closes#1721
Original pull request #1722
@ -231,14 +231,14 @@ public class MappingJdbcConverter extends MappingRelationalConverter implements
@@ -231,14 +231,14 @@ public class MappingJdbcConverter extends MappingRelationalConverter implements
@ -275,7 +275,7 @@ public class MappingJdbcConverter extends MappingRelationalConverter implements
@@ -275,7 +275,7 @@ public class MappingJdbcConverter extends MappingRelationalConverter implements
@ -61,7 +65,7 @@ public class PartTreeJdbcQuery extends AbstractJdbcQuery {
@@ -61,7 +65,7 @@ public class PartTreeJdbcQuery extends AbstractJdbcQuery {
@ -105,12 +109,12 @@ public class PartTreeJdbcQuery extends AbstractJdbcQuery {
@@ -105,12 +109,12 @@ public class PartTreeJdbcQuery extends AbstractJdbcQuery {
@ -134,18 +138,9 @@ public class PartTreeJdbcQuery extends AbstractJdbcQuery {
@@ -134,18 +138,9 @@ public class PartTreeJdbcQuery extends AbstractJdbcQuery {
@ -174,7 +169,7 @@ public class PartTreeJdbcQuery extends AbstractJdbcQuery {
@@ -174,7 +169,7 @@ public class PartTreeJdbcQuery extends AbstractJdbcQuery {
@ -183,10 +178,11 @@ public class PartTreeJdbcQuery extends AbstractJdbcQuery {
@@ -183,10 +178,11 @@ public class PartTreeJdbcQuery extends AbstractJdbcQuery {
@ -259,4 +255,45 @@ public class PartTreeJdbcQuery extends AbstractJdbcQuery {
@@ -259,4 +255,45 @@ public class PartTreeJdbcQuery extends AbstractJdbcQuery {
@ -70,8 +75,13 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery {
@@ -70,8 +75,13 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery {
privatestaticfinalStringPARAMETER_NEEDS_TO_BE_NAMED="For queries with named parameters you need to provide names for method parameters; Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters";
@ -106,7 +116,6 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery {
@@ -106,7 +116,6 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery {
@ -122,6 +131,19 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery {
@@ -122,6 +131,19 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery {
thrownewUnsupportedOperationException(
"Queries with Limit are not supported using string-based queries; Offending method: "+queryMethod);
@ -129,49 +151,38 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery {
@@ -129,49 +151,38 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery {
@ -189,7 +200,7 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery {
@@ -189,7 +200,7 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery {
@ -200,8 +211,7 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery {
@@ -200,8 +211,7 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery {
@ -211,8 +221,8 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery {
@@ -211,8 +221,8 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery {
@ -224,86 +234,171 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery {
@@ -224,86 +234,171 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery {
"Invalid ResultSetExtractor configuration. Configure either one but not both via @Query(resultSetExtractorRef = …, resultSetExtractorClass = …) for query method "
@ -701,8 +702,25 @@ public class MappingRelationalConverter extends AbstractRelationalConverter
@@ -701,8 +702,25 @@ public class MappingRelationalConverter extends AbstractRelationalConverter
@ -724,7 +742,9 @@ public class MappingRelationalConverter extends AbstractRelationalConverter
@@ -724,7 +742,9 @@ public class MappingRelationalConverter extends AbstractRelationalConverter
@ -1207,8 +1227,7 @@ public class MappingRelationalConverter extends AbstractRelationalConverter
@@ -1207,8 +1227,7 @@ public class MappingRelationalConverter extends AbstractRelationalConverter
@ -42,7 +43,12 @@ public class RelationalParameters extends Parameters<RelationalParameters, Relat
@@ -42,7 +43,12 @@ public class RelationalParameters extends Parameters<RelationalParameters, Relat
@ -59,16 +65,17 @@ public class RelationalParameters extends Parameters<RelationalParameters, Relat
@@ -59,16 +65,17 @@ public class RelationalParameters extends Parameters<RelationalParameters, Relat
@ -76,7 +83,7 @@ public class RelationalParameters extends Parameters<RelationalParameters, Relat
@@ -76,7 +83,7 @@ public class RelationalParameters extends Parameters<RelationalParameters, Relat