Skip to content

Commit 6102a6d

Browse files
committed
clean up typing issues around ProcedureCall and its implementation
1 parent 38ea67d commit 6102a6d

File tree

12 files changed

+143
-191
lines changed

12 files changed

+143
-191
lines changed

hibernate-core/src/main/java/org/hibernate/dialect/temptable/TemporaryTableHelper.java

+6-9
Original file line numberDiff line numberDiff line change
@@ -147,26 +147,23 @@ public static void cleanTemporaryTableRows(
147147
TemporaryTableExporter exporter,
148148
Function<SharedSessionContractImplementor,String> sessionUidAccess,
149149
SharedSessionContractImplementor session) {
150-
PreparedStatement ps = null;
150+
PreparedStatement preparedStatement = null;
151151
try {
152152
final String sql = exporter.getSqlTruncateCommand( temporaryTable, sessionUidAccess, session );
153-
154-
ps = session.getJdbcCoordinator().getStatementPreparer().prepareStatement( sql, false );
155-
153+
preparedStatement = session.getJdbcCoordinator().getStatementPreparer().prepareStatement( sql );
156154
if ( temporaryTable.getSessionUidColumn() != null ) {
157155
final String sessionUid = sessionUidAccess.apply( session );
158-
ps.setString( 1, sessionUid );
156+
preparedStatement.setString( 1, sessionUid );
159157
}
160-
161-
session.getJdbcCoordinator().getResultSetReturn().executeUpdate( ps, sql );
158+
session.getJdbcCoordinator().getResultSetReturn().executeUpdate( preparedStatement, sql );
162159
}
163160
catch( Throwable t ) {
164161
log.unableToCleanupTemporaryIdTable(t);
165162
}
166163
finally {
167-
if ( ps != null ) {
164+
if ( preparedStatement != null ) {
168165
try {
169-
session.getJdbcCoordinator().getLogicalConnection().getResourceRegistry().release( ps );
166+
session.getJdbcCoordinator().getLogicalConnection().getResourceRegistry().release( preparedStatement );
170167
}
171168
catch( Throwable ignore ) {
172169
// ignore

hibernate-core/src/main/java/org/hibernate/engine/jdbc/internal/StatementPreparerImpl.java

+8-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*/
55
package org.hibernate.engine.jdbc.internal;
66

7+
import java.sql.CallableStatement;
78
import java.sql.Connection;
89
import java.sql.PreparedStatement;
910
import java.sql.ResultSet;
@@ -76,7 +77,7 @@ public Statement createStatement() {
7677

7778
@Override
7879
public PreparedStatement prepareStatement(String sql) {
79-
return buildPreparedStatementPreparationTemplate( sql, false ).prepareStatement();
80+
return prepareStatement( sql, false );
8081
}
8182

8283
@Override
@@ -85,6 +86,12 @@ public PreparedStatement prepareStatement(String sql, final boolean isCallable)
8586
return buildPreparedStatementPreparationTemplate( sql, isCallable ).prepareStatement();
8687
}
8788

89+
@Override
90+
public CallableStatement prepareCallableStatement(String sql) {
91+
jdbcCoordinator.executeBatch();
92+
return (CallableStatement) prepareStatement( sql, true );
93+
}
94+
8895
private StatementPreparationTemplate buildPreparedStatementPreparationTemplate(String sql, final boolean isCallable) {
8996
return new StatementPreparationTemplate( sql ) {
9097
@Override

hibernate-core/src/main/java/org/hibernate/engine/jdbc/mutation/internal/MutationExecutorStandard.java

+10-8
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,9 @@ public MutationExecutorStandard(
7070
int batchSize,
7171
SharedSessionContractImplementor session) {
7272
this.mutationOperationGroup = mutationOperationGroup;
73-
this.generatedValuesDelegate = mutationOperationGroup.asEntityMutationOperationGroup() != null ?
74-
mutationOperationGroup.asEntityMutationOperationGroup().getMutationDelegate() :
75-
null;
73+
this.generatedValuesDelegate = mutationOperationGroup.asEntityMutationOperationGroup() != null
74+
? mutationOperationGroup.asEntityMutationOperationGroup().getMutationDelegate()
75+
: null;
7676

7777
final BatchKey batchKey = batchKeySupplier.getBatchKey();
7878

@@ -88,11 +88,11 @@ public MutationExecutorStandard(
8888

8989
for ( int i = mutationOperationGroup.getNumberOfOperations() - 1; i >= 0; i-- ) {
9090
final MutationOperation operation = mutationOperationGroup.getOperation( i );
91-
if ( operation instanceof SelfExecutingUpdateOperation ) {
91+
if ( operation instanceof SelfExecutingUpdateOperation selfExecutingUpdateOperation ) {
9292
if ( selfExecutingMutations == null ) {
9393
selfExecutingMutations = new ArrayList<>();
9494
}
95-
selfExecutingMutations.add( 0, ( (SelfExecutingUpdateOperation) operation ) );
95+
selfExecutingMutations.add( 0, selfExecutingUpdateOperation );
9696
}
9797
else {
9898
final PreparableMutationOperation preparableMutationOperation = (PreparableMutationOperation) operation;
@@ -245,9 +245,11 @@ protected GeneratedValues performNonBatchedOperations(
245245
session
246246
);
247247

248-
final Object id = entityGroup.getMutationType() == MutationType.INSERT && details.getMutatingTableDetails().isIdentifierTable() ?
249-
generatedValues.getGeneratedValue( entityTarget.getTargetPart().getIdentifierMapping() ) :
250-
null;
248+
final Object id =
249+
entityGroup.getMutationType() == MutationType.INSERT
250+
&& details.getMutatingTableDetails().isIdentifierTable()
251+
? generatedValues.getGeneratedValue( entityTarget.getTargetPart().getIdentifierMapping() )
252+
: null;
251253
nonBatchedStatementGroup.forEachStatement( (tableName, statementDetails) -> {
252254
if ( !statementDetails.getMutatingTableDetails().isIdentifierTable() ) {
253255
performNonBatchedMutation(

hibernate-core/src/main/java/org/hibernate/engine/jdbc/spi/StatementPreparer.java

+12
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*/
55
package org.hibernate.engine.jdbc.spi;
66

7+
import java.sql.CallableStatement;
78
import java.sql.PreparedStatement;
89
import java.sql.Statement;
910

@@ -37,6 +38,17 @@ public interface StatementPreparer {
3738
*/
3839
PreparedStatement prepareStatement(String sql);
3940

41+
/**
42+
* Prepare a statement.
43+
*
44+
* @param sql The SQL the statement to be prepared
45+
*
46+
* @return the prepared statement
47+
*
48+
* @since 7.0
49+
*/
50+
CallableStatement prepareCallableStatement(String sql);
51+
4052
/**
4153
* Prepare a statement.
4254
*

hibernate-core/src/main/java/org/hibernate/generator/internal/SourceGeneration.java

+13-21
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.hibernate.annotations.SourceType;
1010
import org.hibernate.dialect.Dialect;
1111
import org.hibernate.engine.jdbc.spi.JdbcCoordinator;
12+
import org.hibernate.engine.jdbc.spi.StatementPreparer;
1213
import org.hibernate.engine.spi.SharedSessionContractImplementor;
1314
import org.hibernate.generator.EventType;
1415
import org.hibernate.generator.EventTypeSets;
@@ -79,23 +80,21 @@ public EnumSet<EventType> getEventTypes() {
7980

8081
@Override
8182
public Object generate(SharedSessionContractImplementor session, Object owner, Object currentValue, EventType eventType) {
82-
if ( valueGenerator == null ) {
83-
return propertyType.wrap( getCurrentTimestamp( session ), session );
84-
}
85-
else {
86-
return valueGenerator.generate();
87-
}
83+
return valueGenerator == null
84+
? propertyType.wrap( getCurrentTimestamp( session ), session )
85+
: valueGenerator.generate();
8886
}
8987

9088
private Timestamp getCurrentTimestamp(SharedSessionContractImplementor session) {
91-
Dialect dialect = session.getJdbcServices().getJdbcEnvironment().getDialect();
92-
boolean callable = dialect.isCurrentTimestampSelectStringCallable();
93-
String timestampSelectString = dialect.getCurrentTimestampSelectString();
89+
final Dialect dialect = session.getJdbcServices().getJdbcEnvironment().getDialect();
90+
final boolean callable = dialect.isCurrentTimestampSelectStringCallable();
91+
final String timestampSelectString = dialect.getCurrentTimestampSelectString();
92+
final JdbcCoordinator coordinator = session.getJdbcCoordinator();
93+
final StatementPreparer statementPreparer = coordinator.getStatementPreparer();
9494
PreparedStatement statement = null;
95-
JdbcCoordinator coordinator = session.getJdbcCoordinator();
9695
try {
97-
statement = prepareStatement( coordinator, timestampSelectString, callable );
98-
Timestamp ts = callable
96+
statement = statementPreparer.prepareStatement( timestampSelectString, callable );
97+
final Timestamp ts = callable
9998
? extractCalledResult( statement, coordinator, timestampSelectString )
10099
: extractResult( statement, coordinator, timestampSelectString );
101100
logResult( ts );
@@ -116,23 +115,16 @@ private Timestamp getCurrentTimestamp(SharedSessionContractImplementor session)
116115
}
117116
}
118117

119-
private static PreparedStatement prepareStatement(
120-
JdbcCoordinator coordinator,
121-
String timestampSelectString,
122-
boolean callable) {
123-
return coordinator.getStatementPreparer().prepareStatement( timestampSelectString, callable );
124-
}
125-
126118
private static Timestamp extractResult(PreparedStatement statement, JdbcCoordinator coordinator, String sql)
127119
throws SQLException {
128-
ResultSet resultSet = coordinator.getResultSetReturn().extract( statement, sql );
120+
final ResultSet resultSet = coordinator.getResultSetReturn().extract( statement, sql );
129121
resultSet.next();
130122
return resultSet.getTimestamp( 1 );
131123
}
132124

133125
private static Timestamp extractCalledResult(PreparedStatement statement, JdbcCoordinator coordinator, String sql)
134126
throws SQLException {
135-
CallableStatement callable = (CallableStatement) statement;
127+
final CallableStatement callable = (CallableStatement) statement;
136128
callable.registerOutParameter( 1, TIMESTAMP );
137129
coordinator.getResultSetReturn().execute( callable, sql );
138130
return callable.getTimestamp( 1 );

hibernate-core/src/main/java/org/hibernate/id/insert/AbstractSelectingDelegate.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,10 @@ public final GeneratedValues performInsertReturning(String sql, SharedSessionCon
149149

150150
try {
151151
//fetch the generated id in a separate query
152-
PreparedStatement idSelect = statementPreparer.prepareStatement( selectSQL, false );
152+
final PreparedStatement idSelect = statementPreparer.prepareStatement( selectSQL );
153153
try {
154154
bindParameters( binder.getEntity(), idSelect, session );
155-
ResultSet resultSet = jdbcCoordinator.getResultSetReturn().extract( idSelect, selectSQL );
155+
final ResultSet resultSet = jdbcCoordinator.getResultSetReturn().extract( idSelect, selectSQL );
156156
try {
157157
return extractReturningValues( resultSet, session );
158158
}

hibernate-core/src/main/java/org/hibernate/procedure/ProcedureCall.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ public interface ProcedureCall
155155
* @throws ParameterStrategyException If the ProcedureCall is defined using named parameters
156156
* @throws NoSuchParameterException If no parameter with that position exists
157157
*/
158-
ProcedureParameter getParameterRegistration(int position);
158+
ProcedureParameter<?> getParameterRegistration(int position);
159159

160160
/**
161161
* Basic form for registering a named parameter.
@@ -205,14 +205,14 @@ <T> ProcedureParameter<T> registerParameter(String parameterName, BasicTypeRefer
205205
* @throws ParameterStrategyException If the ProcedureCall is defined using positional parameters
206206
* @throws NoSuchParameterException If no parameter with that name exists
207207
*/
208-
ProcedureParameter getParameterRegistration(String name);
208+
ProcedureParameter<?> getParameterRegistration(String name);
209209

210210
/**
211211
* Retrieve all registered parameters.
212212
*
213213
* @return The (immutable) list of all registered parameters.
214214
*/
215-
List<ProcedureParameter> getRegisteredParameters();
215+
List<ProcedureParameter<?>> getRegisteredParameters();
216216

217217
/**
218218
* Retrieves access to outputs of this procedure call. Can be called multiple times, returning the same
@@ -243,8 +243,8 @@ default void close() {
243243
@Override
244244
ProcedureCall addSynchronizedEntityName(String entityName) throws MappingException;
245245

246-
@Override @SuppressWarnings("rawtypes")
247-
ProcedureCall addSynchronizedEntityClass(Class entityClass) throws MappingException;
246+
@Override
247+
ProcedureCall addSynchronizedEntityClass(@SuppressWarnings("rawtypes") Class entityClass) throws MappingException;
248248

249249
@Override
250250
NamedCallableQueryMemento toMemento(String name);
@@ -283,8 +283,8 @@ default void close() {
283283
ProcedureCall setFlushMode(FlushModeType flushMode);
284284

285285
@Override
286-
ProcedureCall registerStoredProcedureParameter(int position, Class type, ParameterMode mode);
286+
ProcedureCall registerStoredProcedureParameter(int position, Class<?> type, ParameterMode mode);
287287

288288
@Override
289-
ProcedureCall registerStoredProcedureParameter(String parameterName, Class type, ParameterMode mode);
289+
ProcedureCall registerStoredProcedureParameter(String parameterName, Class<?> type, ParameterMode mode);
290290
}

0 commit comments

Comments
 (0)