From 17f57374cb8ee790d70e525745dc26971e1c2a1f Mon Sep 17 00:00:00 2001 From: Philippe Marschall Date: Thu, 18 Dec 2025 11:21:03 +0100 Subject: [PATCH] Deprecate Derby support Deprecate Derby support since Apache Derby is retired since 2023. Closes gh-36042 Signed-off-by: Philippe Marschall --- .../jdbc/core/metadata/CallMetaDataProviderFactory.java | 1 + .../jdbc/core/metadata/DerbyCallMetaDataProvider.java | 2 ++ .../jdbc/core/metadata/DerbyTableMetaDataProvider.java | 2 ++ .../jdbc/core/metadata/TableMetaDataProviderFactory.java | 1 + .../embedded/DerbyEmbeddedDatabaseConfigurer.java | 5 ++++- .../datasource/embedded/EmbeddedDatabaseConfigurers.java | 1 + .../jdbc/datasource/embedded/EmbeddedDatabaseType.java | 7 ++++++- .../jdbc/support/incrementer/DerbyMaxValueIncrementer.java | 3 ++- .../java/org/springframework/orm/jpa/vendor/Database.java | 4 ++++ 9 files changed, 23 insertions(+), 3 deletions(-) diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataProviderFactory.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataProviderFactory.java index a44dbec9a499..61942d4dcade 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataProviderFactory.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataProviderFactory.java @@ -118,6 +118,7 @@ public static CallMetaDataProvider createMetaDataProvider(DataSource dataSource, } } + @SuppressWarnings("removal") CallMetaDataProvider provider = switch (databaseProductName) { case ORACLE -> new OracleCallMetaDataProvider(databaseMetaData); case POSTGRES -> new PostgresCallMetaDataProvider(databaseMetaData); diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/DerbyCallMetaDataProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/DerbyCallMetaDataProvider.java index 592fe1223131..1d257a9e3651 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/DerbyCallMetaDataProvider.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/DerbyCallMetaDataProvider.java @@ -29,7 +29,9 @@ * @author Thomas Risberg * @author Juergen Hoeller * @since 2.5 + * @deprecated Apache Derby is retired, switch to H2 or HSQLDB */ +@Deprecated(forRemoval = true, since = "7.1") public class DerbyCallMetaDataProvider extends GenericCallMetaDataProvider { public DerbyCallMetaDataProvider(DatabaseMetaData databaseMetaData) throws SQLException { diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/DerbyTableMetaDataProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/DerbyTableMetaDataProvider.java index af6575c00b60..3278d3845f44 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/DerbyTableMetaDataProvider.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/DerbyTableMetaDataProvider.java @@ -25,7 +25,9 @@ * * @author Thomas Risberg * @since 3.0 + * @deprecated Apache Derby is retired, switch to HSQLDB or H2 */ +@Deprecated(forRemoval = true, since = "7.1") public class DerbyTableMetaDataProvider extends GenericTableMetaDataProvider { private boolean supportsGeneratedKeysOverride = false; diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataProviderFactory.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataProviderFactory.java index f0301f92695b..9b334e19ff9f 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataProviderFactory.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataProviderFactory.java @@ -47,6 +47,7 @@ private TableMetaDataProviderFactory() { * @param context the class that holds configuration and meta-data * @return instance of the TableMetaDataProvider implementation to be used */ + @SuppressWarnings("removal") public static TableMetaDataProvider createMetaDataProvider(DataSource dataSource, TableMetaDataContext context) { try { return JdbcUtils.extractDatabaseMetaData(dataSource, databaseMetaData -> { diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/embedded/DerbyEmbeddedDatabaseConfigurer.java b/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/embedded/DerbyEmbeddedDatabaseConfigurer.java index 0070a72c3734..a1f241c3187f 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/embedded/DerbyEmbeddedDatabaseConfigurer.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/embedded/DerbyEmbeddedDatabaseConfigurer.java @@ -16,6 +16,7 @@ package org.springframework.jdbc.datasource.embedded; +import java.io.OutputStream; import java.sql.SQLException; import java.util.Properties; @@ -33,7 +34,9 @@ * @author Oliver Gierke * @author Juergen Hoeller * @since 3.0 + * @deprecated Apache Derby is retired, switch to H2 or HSQLDB */ +@Deprecated(forRemoval = true, since = "7.1") final class DerbyEmbeddedDatabaseConfigurer implements EmbeddedDatabaseConfigurer { private static final String URL_TEMPLATE = "jdbc:derby:memory:%s;%s"; @@ -49,7 +52,7 @@ public static synchronized DerbyEmbeddedDatabaseConfigurer getInstance() { if (instance == null) { // disable log file System.setProperty("derby.stream.error.method", - OutputStreamFactory.class.getName() + ".getNoopOutputStream"); + OutputStream.class.getName() + ".nullOutputStream"); instance = new DerbyEmbeddedDatabaseConfigurer(); } return instance; diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseConfigurers.java b/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseConfigurers.java index 8af312799c24..eaea103488a8 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseConfigurers.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseConfigurers.java @@ -38,6 +38,7 @@ public abstract class EmbeddedDatabaseConfigurers { * @return the configurer instance * @throws IllegalStateException if the driver for the specified database type is not available */ + @SuppressWarnings("removal") public static EmbeddedDatabaseConfigurer getConfigurer(EmbeddedDatabaseType type) { Assert.notNull(type, "EmbeddedDatabaseType is required"); try { diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseType.java b/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseType.java index df6bd3a46b13..4ba5806c6ab9 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseType.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseType.java @@ -31,7 +31,12 @@ public enum EmbeddedDatabaseType { /** The H2 Embedded Java SQL Database Engine. */ H2, - /** The Apache Derby Embedded SQL Database. */ + /** + * The Apache Derby Embedded SQL Database. + * + * @deprecated Apache Derby is retired, switch to HSQLDB or H2 + */ + @Deprecated(forRemoval = true, since = "7.1") DERBY } diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/incrementer/DerbyMaxValueIncrementer.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/incrementer/DerbyMaxValueIncrementer.java index 92f0654a39bd..f429e66ac06d 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/incrementer/DerbyMaxValueIncrementer.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/incrementer/DerbyMaxValueIncrementer.java @@ -51,8 +51,9 @@ * * @author Thomas Risberg * @author Juergen Hoeller - * @since 2.5 + * @deprecated Apache Derby is retired, switch to HSQLDB or H2 */ +@Deprecated(forRemoval = true, since = "7.1") public class DerbyMaxValueIncrementer extends AbstractIdentityColumnMaxValueIncrementer { /** The default for dummy name. */ diff --git a/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/Database.java b/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/Database.java index 177db82d0184..955fa498faf5 100644 --- a/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/Database.java +++ b/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/Database.java @@ -37,6 +37,10 @@ public enum Database { DB2, + /** + * @deprecated Apache Derby is retired, switch to HSQLDB or H2 + */ + @Deprecated(forRemoval = true, since = "7.1") DERBY, /** @since 2.5.5 */