Skip to content

Commit 47cad97

Browse files
committed
refactor TableGenerator.generate()
1 parent b843c97 commit 47cad97

File tree

2 files changed

+38
-34
lines changed

2 files changed

+38
-34
lines changed

hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceStyleGenerator.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import java.util.Properties;
88
import java.util.function.BiConsumer;
99

10-
import org.hibernate.HibernateException;
1110
import org.hibernate.MappingException;
1211
import org.hibernate.boot.model.naming.Identifier;
1312
import org.hibernate.boot.model.relational.Database;
@@ -555,7 +554,7 @@ private String determineContributor(Properties params) {
555554
// IdentifierGenerator implementation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
556555

557556
@Override
558-
public Object generate(SharedSessionContractImplementor session, Object object) throws HibernateException {
557+
public Object generate(SharedSessionContractImplementor session, Object object) {
559558
return optimizer.generate( databaseStructure.buildCallback( session ) );
560559
}
561560

hibernate-core/src/main/java/org/hibernate/id/enhanced/TableGenerator.java

Lines changed: 37 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -520,39 +520,41 @@ private IntegralDataTypeHolder makeValue() {
520520
}
521521

522522
@Override
523-
public Object generate(final SharedSessionContractImplementor session, final Object obj) {
524-
final var statementLogger =
525-
session.getFactory().getJdbcServices()
526-
.getSqlStatementLogger();
527-
final var statsCollector = session.getEventListenerManager();
528-
return optimizer.generate(
529-
new AccessCallback() {
530-
@Override
531-
public IntegralDataTypeHolder getNextValue() {
532-
return session.getTransactionCoordinator().createIsolationDelegate().delegateWork(
533-
new AbstractReturningWork<>() {
534-
@Override
535-
public IntegralDataTypeHolder execute(Connection connection) throws SQLException {
536-
return nextValue( connection, statementLogger, statsCollector, session );
537-
}
538-
},
539-
true
540-
);
541-
}
542-
@Override
543-
public String getTenantIdentifier() {
544-
return session.getTenantIdentifier();
545-
}
546-
}
547-
);
523+
public Object generate(final SharedSessionContractImplementor session, final Object object) {
524+
return optimizer.generate( new NextValueCallback( session ) );
525+
}
526+
527+
private class NextValueCallback
528+
extends AbstractReturningWork<IntegralDataTypeHolder>
529+
implements AccessCallback {
530+
private final SharedSessionContractImplementor session;
531+
private NextValueCallback(SharedSessionContractImplementor session) {
532+
this.session = session;
533+
}
534+
@Override
535+
public IntegralDataTypeHolder getNextValue() {
536+
return session.getTransactionCoordinator().createIsolationDelegate()
537+
.delegateWork( this, true );
538+
}
539+
@Override
540+
public IntegralDataTypeHolder execute(Connection connection)
541+
throws SQLException {
542+
return nextValue( connection, session );
543+
}
544+
@Override
545+
public String getTenantIdentifier() {
546+
return session.getTenantIdentifier();
547+
}
548548
}
549549

550550
private IntegralDataTypeHolder nextValue(
551551
Connection connection,
552-
SqlStatementLogger logger,
553-
SessionEventListenerManager listener,
554552
SharedSessionContractImplementor session)
555-
throws SQLException {
553+
throws SQLException {
554+
final var logger =
555+
session.getFactory().getJdbcServices()
556+
.getSqlStatementLogger();
557+
final var listener = session.getEventListenerManager();
556558
final var value = makeValue();
557559
int rows;
558560
do {
@@ -636,7 +638,8 @@ private PreparedStatement prepareStatement(
636638
String sql,
637639
SqlStatementLogger logger,
638640
SessionEventListenerManager listener,
639-
SharedSessionContractImplementor session) throws SQLException {
641+
SharedSessionContractImplementor session)
642+
throws SQLException {
640643
logger.logStatement( sql, FormatStyle.BASIC.getFormatter() );
641644
final var eventMonitor = session.getEventMonitor();
642645
final var creationEvent = eventMonitor.beginJdbcPreparedStatementCreationEvent();
@@ -661,7 +664,8 @@ private int executeUpdate(
661664
PreparedStatement ps,
662665
SessionEventListenerManager listener,
663666
String sql,
664-
SharedSessionContractImplementor session) throws SQLException {
667+
SharedSessionContractImplementor session)
668+
throws SQLException {
665669
final var eventMonitor = session.getEventMonitor();
666670
final var executionEvent = eventMonitor.beginJdbcPreparedStatementExecutionEvent();
667671
try {
@@ -678,7 +682,8 @@ private ResultSet executeQuery(
678682
PreparedStatement ps,
679683
SessionEventListenerManager listener,
680684
String sql,
681-
SharedSessionContractImplementor session) throws SQLException {
685+
SharedSessionContractImplementor session)
686+
throws SQLException {
682687
final var eventMonitor = session.getEventMonitor();
683688
final var executionEvent = eventMonitor.beginJdbcPreparedStatementExecutionEvent();
684689
try {
@@ -784,7 +789,7 @@ public void initialize(SqlStringGenerationContext context) {
784789
public static void applyConfiguration(
785790
jakarta.persistence.TableGenerator generatorConfig,
786791
BiConsumer<String, String> configurationCollector) {
787-
configurationCollector.accept( CONFIG_PREFER_SEGMENT_PER_ENTITY, "true" );
792+
configurationCollector.accept( CONFIG_PREFER_SEGMENT_PER_ENTITY, String.valueOf(true) );
788793

789794
applyIfNotEmpty( TABLE_PARAM, generatorConfig.table(), configurationCollector );
790795
applyIfNotEmpty( CATALOG, generatorConfig.catalog(), configurationCollector );

0 commit comments

Comments
 (0)