Skip to content

Commit 516deb4

Browse files
committed
minor code cleanups around JdbcParameterBindingsImpl
1 parent cf72968 commit 516deb4

File tree

3 files changed

+57
-71
lines changed

3 files changed

+57
-71
lines changed

hibernate-core/src/main/java/org/hibernate/sql/exec/internal/JdbcCallImpl.java

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
package org.hibernate.sql.exec.internal;
66

77
import java.util.ArrayList;
8-
import java.util.Collections;
98
import java.util.List;
109
import java.util.Map;
1110
import java.util.Set;
@@ -23,6 +22,10 @@
2322
import org.hibernate.sql.exec.spi.JdbcParameterBindings;
2423
import org.hibernate.sql.results.jdbc.spi.JdbcValuesMappingProducer;
2524

25+
import static java.util.Collections.emptyList;
26+
import static java.util.Collections.emptyMap;
27+
import static java.util.Collections.unmodifiableList;
28+
2629
/**
2730
* Models the actual call, allowing iterative building of the parts.
2831
*
@@ -42,17 +45,17 @@ public JdbcCallImpl(Builder builder) {
4245
builder.callableName,
4346
builder.functionReturn,
4447
builder.parameterRegistrations == null
45-
? Collections.emptyList()
46-
: Collections.unmodifiableList( builder.parameterRegistrations ),
48+
? emptyList()
49+
: unmodifiableList( builder.parameterRegistrations ),
4750
builder.parameterBinders == null
48-
? Collections.emptyList()
49-
: Collections.unmodifiableList( builder.parameterBinders ),
51+
? emptyList()
52+
: unmodifiableList( builder.parameterBinders ),
5053
builder.parameterExtractors == null
51-
? Collections.emptyList()
52-
: Collections.unmodifiableList( builder.parameterExtractors ),
54+
? emptyList()
55+
: unmodifiableList( builder.parameterExtractors ),
5356
builder.refCursorExtractors == null
54-
? Collections.emptyList()
55-
: Collections.unmodifiableList( builder.refCursorExtractors )
57+
? emptyList()
58+
: unmodifiableList( builder.refCursorExtractors )
5659
);
5760
}
5861

@@ -99,12 +102,12 @@ public JdbcCallFunctionReturn getFunctionReturn() {
99102

100103
@Override
101104
public List<JdbcCallParameterRegistration> getParameterRegistrations() {
102-
return parameterRegistrations == null ? Collections.emptyList() : parameterRegistrations;
105+
return parameterRegistrations == null ? emptyList() : parameterRegistrations;
103106
}
104107

105108
@Override
106109
public List<JdbcParameterBinder> getParameterBinders() {
107-
return parameterBinders == null ? Collections.emptyList() : parameterBinders;
110+
return parameterBinders == null ? emptyList() : parameterBinders;
108111
}
109112

110113
@Override
@@ -119,7 +122,7 @@ public boolean dependsOnParameterBindings() {
119122

120123
@Override
121124
public Map<JdbcParameter, JdbcParameterBinding> getAppliedParameters() {
122-
return Collections.emptyMap();
125+
return emptyMap();
123126
}
124127

125128
@Override
@@ -130,12 +133,12 @@ public boolean isCompatibleWith(
130133

131134
@Override
132135
public List<JdbcCallParameterExtractor> getParameterExtractors() {
133-
return parameterExtractors == null ? Collections.emptyList() : parameterExtractors;
136+
return parameterExtractors == null ? emptyList() : parameterExtractors;
134137
}
135138

136139
@Override
137140
public List<JdbcCallRefCursorExtractor> getCallRefCursorExtractors() {
138-
return refCursorExtractors == null ? Collections.emptyList() : refCursorExtractors;
141+
return refCursorExtractors == null ? emptyList() : refCursorExtractors;
139142
}
140143

141144
@Override

hibernate-core/src/main/java/org/hibernate/sql/exec/internal/JdbcCallRefCursorExtractorImpl.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ public JdbcCallRefCursorExtractorImpl(
3030
public ResultSet extractResultSet(
3131
CallableStatement callableStatement,
3232
SharedSessionContractImplementor session) {
33-
final boolean supportsNamedParameters = session.getJdbcServices()
34-
.getJdbcEnvironment()
35-
.getExtractedDatabaseMetaData()
36-
.supportsNamedParameters();
33+
// final boolean supportsNamedParameters = session.getJdbcServices()
34+
// .getJdbcEnvironment()
35+
// .getExtractedDatabaseMetaData()
36+
// .supportsNamedParameters();
3737
return session.getFactory()
3838
.getServiceRegistry()
3939
.requireService( RefCursorSupport.class )

hibernate-core/src/main/java/org/hibernate/sql/exec/internal/JdbcParameterBindingsImpl.java

Lines changed: 36 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,18 @@
55
package org.hibernate.sql.exec.internal;
66

77
import java.util.Collection;
8-
import java.util.Collections;
98
import java.util.IdentityHashMap;
109
import java.util.List;
1110
import java.util.Map;
1211
import java.util.function.BiConsumer;
1312

14-
import org.hibernate.dialect.Dialect;
1513
import org.hibernate.engine.spi.SessionFactoryImplementor;
1614
import org.hibernate.metamodel.mapping.BasicValuedMapping;
1715
import org.hibernate.metamodel.mapping.JdbcMapping;
1816
import org.hibernate.type.BindableType;
1917
import org.hibernate.query.spi.QueryParameterBinding;
2018
import org.hibernate.query.spi.QueryParameterBindings;
2119
import org.hibernate.query.spi.QueryParameterImplementor;
22-
import org.hibernate.query.sql.internal.NativeQueryImpl;
2320
import org.hibernate.query.sql.spi.ParameterOccurrence;
2421
import org.hibernate.sql.ast.tree.expression.JdbcParameter;
2522
import org.hibernate.sql.exec.spi.JdbcParameterBinder;
@@ -28,6 +25,9 @@
2825
import org.hibernate.type.BasicTypeReference;
2926
import org.hibernate.type.descriptor.converter.spi.BasicValueConverter;
3027

28+
import static java.util.Collections.emptyList;
29+
import static org.hibernate.query.sql.internal.NativeQueryImpl.determineBindValueMaxCount;
30+
3131
/**
3232
* Standard implementation of JdbcParameterBindings
3333
*
@@ -50,42 +50,22 @@ public JdbcParameterBindingsImpl(
5050
if ( !parameterOccurrences.isEmpty() ) {
5151
bindingMap = new IdentityHashMap<>( parameterOccurrences.size() );
5252

53-
final Dialect dialect = factory.getJdbcServices().getDialect();
5453
final boolean paddingEnabled = factory.getSessionFactoryOptions().inClauseParameterPaddingEnabled();
55-
final int inExprLimit = dialect.getParameterCountLimit();
54+
final int inExprLimit = factory.getJdbcServices().getDialect().getParameterCountLimit();
5655

5756
for ( ParameterOccurrence occurrence : parameterOccurrences ) {
5857
final QueryParameterImplementor<?> param = occurrence.parameter();
5958
final QueryParameterBinding<?> binding = queryParameterBindings.getBinding( param );
6059

61-
final JdbcMapping jdbcMapping;
62-
63-
final BindableType<?> type = determineParamType( param, binding );
64-
if ( type == null ) {
65-
jdbcMapping = factory.getTypeConfiguration().getBasicTypeForJavaType( Object.class );
66-
}
67-
else if ( type instanceof BasicTypeReference<?> basicTypeReference ) {
68-
jdbcMapping =
69-
factory.getTypeConfiguration().getBasicTypeRegistry()
70-
.resolve( basicTypeReference );
71-
}
72-
else if ( type instanceof BasicValuedMapping basicValuedMapping ) {
73-
jdbcMapping = basicValuedMapping.getJdbcMapping();
74-
}
75-
else {
76-
throw new IllegalArgumentException( "Could not resolve NativeQuery parameter type : `" + param + "`");
77-
}
60+
final JdbcMapping jdbcMapping = jdbcMapping( factory, param, binding );
7861

7962
final BasicValueConverter valueConverter = jdbcMapping == null ? null : jdbcMapping.getValueConverter();
8063

8164
if ( binding.isMultiValued() ) {
8265
final Collection<?> bindValues = binding.getBindValues();
8366
final int bindValueCount = bindValues.size();
84-
final int bindValueMaxCount = NativeQueryImpl.determineBindValueMaxCount(
85-
paddingEnabled,
86-
inExprLimit,
87-
bindValueCount
88-
);
67+
final int bindValueMaxCount =
68+
determineBindValueMaxCount( paddingEnabled, inExprLimit, bindValueCount );
8969
Object lastBindValue = null;
9070
if ( valueConverter != null ) {
9171
for ( Object bindValue : bindValues ) {
@@ -119,31 +99,38 @@ else if ( type instanceof BasicValuedMapping basicValuedMapping ) {
11999
}
120100
}
121101
else {
122-
final Object bindValue;
123-
if ( valueConverter != null && binding.getBindValue() != null ) {
124-
bindValue = valueConverter.toRelationalValue( binding.getBindValue() );
125-
}
126-
else {
127-
bindValue = binding.getBindValue();
128-
}
129-
102+
final Object bindValue =
103+
valueConverter != null && binding.getBindValue() != null
104+
? valueConverter.toRelationalValue( binding.getBindValue() )
105+
: binding.getBindValue();
130106
final JdbcParameterImpl jdbcParameter = new JdbcParameterImpl( jdbcMapping );
131107
jdbcParameterBinders.add( jdbcParameter );
132-
addBinding(
133-
jdbcParameter,
134-
new JdbcParameterBindingImpl( jdbcMapping, bindValue )
135-
);
108+
addBinding( jdbcParameter, new JdbcParameterBindingImpl( jdbcMapping, bindValue ) );
136109
}
137110
}
138111
}
139112
}
140113

141-
private BindableType<?> determineParamType(QueryParameterImplementor<?> param, QueryParameterBinding<?> binding) {
142-
BindableType<?> type = binding.getBindType();
114+
private JdbcMapping jdbcMapping(SessionFactoryImplementor factory, QueryParameterImplementor<?> param, QueryParameterBinding<?> binding) {
115+
final BindableType<?> type = determineParamType( param, binding );
143116
if ( type == null ) {
144-
type = param.getHibernateType();
117+
return factory.getTypeConfiguration().getBasicTypeForJavaType( Object.class );
145118
}
146-
return type;
119+
else if ( type instanceof BasicTypeReference<?> basicTypeReference ) {
120+
return factory.getTypeConfiguration().getBasicTypeRegistry()
121+
.resolve( basicTypeReference );
122+
}
123+
else if ( type instanceof BasicValuedMapping basicValuedMapping ) {
124+
return basicValuedMapping.getJdbcMapping();
125+
}
126+
else {
127+
throw new IllegalArgumentException( "Could not resolve NativeQuery parameter type : `" + param + "`");
128+
}
129+
}
130+
131+
private BindableType<?> determineParamType(QueryParameterImplementor<?> param, QueryParameterBinding<?> binding) {
132+
final BindableType<?> type = binding.getBindType();
133+
return type == null ? param.getHibernateType() : type;
147134
}
148135

149136
@Override
@@ -157,24 +144,20 @@ public void addBinding(JdbcParameter parameter, JdbcParameterBinding binding) {
157144

158145
@Override
159146
public Collection<JdbcParameterBinding> getBindings() {
160-
return bindingMap == null ? Collections.emptyList() : bindingMap.values();
147+
return bindingMap == null ? emptyList() : bindingMap.values();
161148
}
162149

163150
@Override
164151
public JdbcParameterBinding getBinding(JdbcParameter parameter) {
165-
if ( bindingMap == null ) {
166-
return null;
167-
}
168-
return bindingMap.get( parameter );
152+
return bindingMap == null ? null : bindingMap.get( parameter );
169153
}
170154

171155
@Override
172156
public void visitBindings(BiConsumer<JdbcParameter, JdbcParameterBinding> action) {
173-
if ( bindingMap == null ) {
174-
return;
175-
}
176-
for ( Map.Entry<JdbcParameter, JdbcParameterBinding> entry : bindingMap.entrySet() ) {
177-
action.accept( entry.getKey(), entry.getValue() );
157+
if ( bindingMap != null ) {
158+
for ( var entry : bindingMap.entrySet() ) {
159+
action.accept( entry.getKey(), entry.getValue() );
160+
}
178161
}
179162
}
180163

0 commit comments

Comments
 (0)