diff --git a/hibernate-core/src/main/java/org/hibernate/cfg/DialectSpecificSettings.java b/hibernate-core/src/main/java/org/hibernate/cfg/DialectSpecificSettings.java index 8e25dfe20b99..384306c33243 100644 --- a/hibernate-core/src/main/java/org/hibernate/cfg/DialectSpecificSettings.java +++ b/hibernate-core/src/main/java/org/hibernate/cfg/DialectSpecificSettings.java @@ -43,13 +43,6 @@ public interface DialectSpecificSettings { */ String ORACLE_APPLICATION_CONTINUITY = "hibernate.dialect.oracle.application_continuity"; - /** - * Enables the use of the deprecated type {@code LONGVARBINARY} on Oracle instead of {@code BLOB}. - * - * @settingDefault {@code false} - */ - String ORACLE_PREFER_LONG_RAW = "hibernate.dialect.oracle.prefer_long_raw"; - /** * Specifies whether the {@code ansinull} setting is enabled on Sybase. *
diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/MySQLDialect.java b/hibernate-core/src/main/java/org/hibernate/dialect/MySQLDialect.java index 6e8f88deb42f..690f32dce88b 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/MySQLDialect.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/MySQLDialect.java @@ -47,7 +47,6 @@ import org.hibernate.exception.spi.SQLExceptionConversionDelegate; import org.hibernate.exception.spi.TemplatedViolatedConstraintNameExtractor; import org.hibernate.exception.spi.ViolatedConstraintNameExtractor; -import org.hibernate.internal.util.StringHelper; import org.hibernate.mapping.CheckConstraint; import org.hibernate.metamodel.mapping.EntityMappingType; import org.hibernate.metamodel.spi.RuntimeModelCreationContext; diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/OracleDialect.java b/hibernate-core/src/main/java/org/hibernate/dialect/OracleDialect.java index 35dda7f004b8..e1afde5658dc 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/OracleDialect.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/OracleDialect.java @@ -19,7 +19,6 @@ import org.hibernate.QueryTimeoutException; import org.hibernate.boot.model.FunctionContributions; import org.hibernate.boot.model.TypeContributions; -import org.hibernate.cfg.DialectSpecificSettings; import org.hibernate.dialect.aggregate.AggregateSupport; import org.hibernate.dialect.aggregate.OracleAggregateSupport; import org.hibernate.dialect.function.CommonFunctionFactory; @@ -35,8 +34,6 @@ import org.hibernate.dialect.temptable.TemporaryTableKind; import org.hibernate.dialect.unique.CreateTableUniqueDelegate; import org.hibernate.dialect.unique.UniqueDelegate; -import org.hibernate.engine.config.spi.ConfigurationService; -import org.hibernate.engine.config.spi.StandardConverters; import org.hibernate.engine.jdbc.dialect.spi.DialectResolutionInfo; import org.hibernate.engine.jdbc.env.spi.IdentifierHelper; import org.hibernate.engine.jdbc.env.spi.IdentifierHelperBuilder; @@ -87,7 +84,6 @@ import org.hibernate.type.NullType; import org.hibernate.type.StandardBasicTypes; import org.hibernate.type.descriptor.java.PrimitiveByteArrayJavaType; -import org.hibernate.type.descriptor.jdbc.BlobJdbcType; import org.hibernate.type.descriptor.jdbc.JdbcType; import org.hibernate.type.descriptor.jdbc.NullJdbcType; import org.hibernate.type.descriptor.jdbc.ObjectNullAsNullTypeJdbcType; @@ -167,16 +163,11 @@ public class OracleDialect extends Dialect { private static final Pattern SQL_STATEMENT_TYPE_PATTERN = Pattern.compile( "^(?:/\\*.*?\\*/)?\\s*(select|insert|update|delete)\\s+.*?", CASE_INSENSITIVE ); - private static final int PARAM_LIST_SIZE_LIMIT_1000 = 1000; - - /** Starting from 23c, 65535 parameters are supported for the IN condition. */ - private static final int PARAM_LIST_SIZE_LIMIT_65535 = 65535; - /** - * @deprecated Use {@link DialectSpecificSettings#ORACLE_PREFER_LONG_RAW}. + * Starting from 23c, 65535 parameters are supported for the {@code IN} condition. */ - @Deprecated(since = "7.0", forRemoval = true) - public static final String PREFER_LONG_RAW = DialectSpecificSettings.ORACLE_PREFER_LONG_RAW; + private static final int PARAM_LIST_SIZE_LIMIT_65535 = 65535; + private static final int PARAM_LIST_SIZE_LIMIT_1000 = 1000; private static final String yqmSelect = "(trunc(%2$s, 'MONTH') + numtoyminterval(%1$s, 'MONTH') + (least(extract(day from %2$s), extract(day from last_day(trunc(%2$s, 'MONTH') + numtoyminterval(%1$s, 'MONTH')))) - 1))"; @@ -987,12 +978,6 @@ public void contributeTypes(TypeContributions typeContributions, ServiceRegistry typeContributions.contributeJdbcType( OracleReflectionStructJdbcType.INSTANCE ); } - // account for Oracle's deprecated support for LONGVARBINARY - // prefer BLOB, unless the user explicitly opts out - final boolean preferLong = serviceRegistry.requireService( ConfigurationService.class ) - .getSetting( PREFER_LONG_RAW, StandardConverters.BOOLEAN, false ); - typeContributions.contributeJdbcType( preferLong ? BlobJdbcType.PRIMITIVE_ARRAY_BINDING : BlobJdbcType.DEFAULT ); - if ( getVersion().isSameOrAfter( 21 ) ) { typeContributions.contributeJdbcType( OracleJsonJdbcType.INSTANCE ); typeContributions.contributeJdbcTypeConstructor( OracleJsonArrayJdbcTypeConstructor.NATIVE_INSTANCE ); diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/OracleServerConfiguration.java b/hibernate-core/src/main/java/org/hibernate/dialect/OracleServerConfiguration.java index d94ce4fc5e2f..7364799821b4 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/OracleServerConfiguration.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/OracleServerConfiguration.java @@ -129,7 +129,7 @@ public static OracleServerConfiguration fromDialectResolutionInfo(DialectResolut private static boolean isExtended(Statement statement) { try ( final ResultSet resultSet = - statement.executeQuery( "select cast('string' as varchar2(32000)) from dual" ) ) { + statement.executeQuery( "select cast('string' as varchar2(32000)) from dual" ) ) { resultSet.next(); // succeeded, so MAX_STRING_SIZE == EXTENDED return true; @@ -184,7 +184,7 @@ private static Boolean determineApplicationContinuity(Connection connection, Sta private static boolean isAutonomous(Statement statement) { try ( final ResultSet resultSet = - statement.executeQuery( "select sys_context('USERENV','CLOUD_SERVICE') from dual" ) ) { + statement.executeQuery( "select sys_context('USERENV','CLOUD_SERVICE') from dual" ) ) { return resultSet.next() && List.of( "OLTP", "DWCS", "JDCS" ) .contains( resultSet.getString(1) ); diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/type/OracleLongLobTypeTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/type/OracleLongLobTypeTest.java deleted file mode 100644 index 498fce9435f3..000000000000 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/type/OracleLongLobTypeTest.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * SPDX-License-Identifier: LGPL-2.1-or-later - * Copyright Red Hat Inc. and Hibernate Authors - */ -package org.hibernate.orm.test.type; - -import java.sql.Blob; -import java.sql.Clob; -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.Lob; - -import org.hibernate.boot.MetadataSources; -import org.hibernate.boot.registry.StandardServiceRegistry; -import org.hibernate.boot.registry.StandardServiceRegistryBuilder; -import org.hibernate.boot.spi.MetadataImplementor; -import org.hibernate.cfg.AvailableSettings; -import org.hibernate.dialect.Dialect; -import org.hibernate.dialect.OracleDialect; -import org.hibernate.mapping.PersistentClass; -import org.hibernate.type.BasicType; -import org.hibernate.type.BasicTypeReference; -import org.hibernate.type.StandardBasicTypes; -import org.hibernate.type.descriptor.jdbc.spi.JdbcTypeRegistry; - -import org.hibernate.testing.orm.junit.JiraKey; -import org.hibernate.testing.junit4.BaseUnitTestCase; -import org.hibernate.testing.util.ServiceRegistryUtil; - -import org.junit.Test; - -import static org.junit.Assert.assertSame; - -/** - * A test asserting LONG/LONGRAW versus CLOB/BLOB resolution for various Oracle Dialects - * - * @author Steve Ebersole - */ -public class OracleLongLobTypeTest extends BaseUnitTestCase { - - @Test - @JiraKey( value = "HHH-10345" ) - public void testOracle12() { - check( OracleDialect.class, Primitives.class, StandardBasicTypes.BINARY, StandardBasicTypes.CHAR_ARRAY ); - check( OracleDialect.class, LobPrimitives.class, StandardBasicTypes.MATERIALIZED_BLOB, StandardBasicTypes.MATERIALIZED_CLOB_CHAR_ARRAY ); - check( OracleDialect.class, LobLocators.class, StandardBasicTypes.BLOB, StandardBasicTypes.CLOB ); - } - - @Test - @JiraKey( value = "HHH-10345" ) - public void testOracle12PreferLongRaw() { - check( OracleDialect.class, Primitives.class, StandardBasicTypes.BINARY, StandardBasicTypes.CHAR_ARRAY, true ); - check( OracleDialect.class, LobPrimitives.class, StandardBasicTypes.MATERIALIZED_BLOB, StandardBasicTypes.MATERIALIZED_CLOB_CHAR_ARRAY, true ); - check( OracleDialect.class, LobLocators.class, StandardBasicTypes.BLOB, StandardBasicTypes.CLOB, true ); - } - - private void check( - Class extends Dialect> dialectClass, - Class entityClass, - BasicTypeReference> binaryTypeClass, - BasicTypeReference> charTypeClass) { - check( dialectClass, entityClass, binaryTypeClass, charTypeClass, false ); - } - - private void check( - Class extends Dialect> dialectClass, - Class entityClass, - BasicTypeReference> binaryTypeClass, - BasicTypeReference> charTypeClass, - boolean preferLongRaw) { - StandardServiceRegistry ssr = ServiceRegistryUtil.serviceRegistryBuilder() - .applySetting( AvailableSettings.DIALECT, dialectClass.getName() ) - .applySetting( OracleDialect.PREFER_LONG_RAW, Boolean.toString( preferLongRaw ) ) - .applySetting( "hibernate.temp.use_jdbc_metadata_defaults", false ) - .build(); - - try { - final MetadataImplementor mappings = (MetadataImplementor) new MetadataSources( ssr ) - .addAnnotatedClass( entityClass ) - .buildMetadata(); - mappings.orderColumns( false ); - mappings.validate(); - - final PersistentClass entityBinding = mappings.getEntityBinding( entityClass.getName() ); - final JdbcTypeRegistry jdbcTypeRegistry = mappings.getTypeConfiguration() - .getJdbcTypeRegistry(); - - BasicType> type; - - type = (BasicType>) entityBinding.getProperty( "binaryData" ).getType(); - assertSame( jdbcTypeRegistry.getDescriptor( binaryTypeClass.getSqlTypeCode() ), type.getJdbcType() ); - type = (BasicType>) entityBinding.getProperty( "characterData" ).getType(); - assertSame( jdbcTypeRegistry.getDescriptor( charTypeClass.getSqlTypeCode() ), type.getJdbcType() ); - } - finally { - StandardServiceRegistryBuilder.destroy( ssr ); - } - } - - @Entity - public static class Primitives { - @Id - public Integer id; - public byte[] binaryData; - public char[] characterData; - } - - @Entity - public static class LobPrimitives { - @Id - public Integer id; - @Lob - public byte[] binaryData; - @Lob - public char[] characterData; - } - - @Entity - public static class LobLocators { - @Id - public Integer id; - @Lob - public Blob binaryData; - @Lob - public Clob characterData; - } -}