Class DatabasePlatform
- Direct Known Subclasses:
BaseMySqlPlatform,ClickHousePlatform,DB2Platform,H2Platform,HanaPlatform,HsqldbPlatform,NuoDbPlatform,OraclePlatform,PostgresPlatform,SqlAnywherePlatform,SQLitePlatform,SqlServer16Platform,SqlServer17Platform
public class DatabasePlatform extends Object
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classDatabasePlatform.OnQueryOnlyBehavior used when ending a query only transaction (at read committed isolation level). -
Constructor Summary
Constructors Constructor Description DatabasePlatform()Instantiates a new database platform. -
Method Summary
Modifier and Type Method Description StringcompleteSql(String sql, Query<?> query)voidconfigure(PlatformConfig config)Configure the platform given the server configuration.StringconvertQuotedIdentifiers(String dbName)Convert backticks to the platform specific open quote and close quotevoidcreateSchemaIfNotExists(String dbSchema, Connection connection)Create the DB schema if it does not exist.PlatformIdGeneratorcreateSequenceIdGenerator(BackgroundExecutor be, DataSource ds, int stepSize, String seqName)Return a DB Sequence based IdGenerator.StringescapeLikeString(String value)Escapes the like string for this DB-PlatformStringfromForUpdate(Query.LockWait lockWait)For update hint on the FROM clause (SQL server only).BasicSqlLimitergetBasicSqlLimiter()Return the BasicSqlLimiter for limit/offset of SqlQuery queries.intgetBlobDbType()Return the data type that should be used for Blob.intgetBooleanDbType()Return the JDBC type used to store booleans.intgetClobDbType()Return the data type that should be used for Clob.StringgetCloseQuote()Return the close quote for quoted identifiers.StringgetColumnAliasPrefix()Return the column alias prefix.DbDefaultValuegetDbDefaultValue()Return the mapping for DB column default values.DbEncryptgetDbEncrypt()Return the DbEncrypt handler for this DB platform.DbIdentitygetDbIdentity()Return the DB identity/sequence features for this platform.DbPlatformTypeMappinggetDbTypeMap()Return the mapping of JDBC to DB types.DbHistorySupportgetHistorySupport()Return the history support for this database platform.StringgetLikeClause(boolean rawLikeExpression)Returns the like clause used by this database platform.intgetMaxConstraintNameLength()Return the maximum constraint name allowed for the platform.intgetMaxTableNameLength()Return the maximum table name length.StringgetName()Return the name of the underlying Platform in lowercase.DatabasePlatform.OnQueryOnlygetOnQueryOnly()Return the behaviour to use when ending a read only transaction.StringgetOpenQuote()Return the open quote for quoted identifiers.io.ebean.annotation.PersistBatchgetPersistBatchOnCascade()Return the platform default JDBC batch mode for persist cascade.io.ebean.annotation.PlatformgetPlatform()Return the platform key.SqlLimitergetSqlLimiter()Return the SqlLimiter used to apply additional sql around a query to limit its results.booleanisCaseSensitiveCollation()Return true if the collation is case sensitive.booleanisDdlAutoCommit()Normally not needed - overridden in CockroachPlatform.booleanisForwardOnlyHintOnFindIterate()Return true if the ResultSet TYPE_FORWARD_ONLY Hint should be used on findIterate() and findVisit() PreparedStatements.booleanisIdInExpandedForm()Return true if a compound ID in (...) type expression needs to be in expanded form of (a=? and b=?) or (a=? and b=?) or ...booleanisInlineSqlUpdateLimit()Return true if the platform supports LIMIT with sql update.booleanisNativeArrayType()So no except for Postgres and CockroachDB.booleanisNativeUuidType()Return true if the DB supports native UUID.booleanisPlatform(io.ebean.annotation.Platform platform)Return true if this matches the given platform.booleanisSelectCountWithAlias()Set to true if select count against anonymous view requires an alias.booleanisSelectCountWithColumnAlias()Return true if select count with subquery needs column alias (SQL Server).booleanisSequenceBatchMode()Return true if we are using Sequence batch mode rather than STEP.booleanisSupportsDeleteTableAlias()Return true if the platform supports delete statements with table alias.booleanisSupportsNativeIlike()Return true if this database platform supports native ILIKE expression.booleanisSupportsResultSetConcurrencyModeUpdatable()Return true if the ResultSet CONCUR_UPDATABLE Hint should be used on createNativeSqlTree() PreparedStatements.booleanisSupportsSavepointId()Return true if the platform supports SavepointId values.booleanisTreatEmptyStringsAsNull()Return true if empty strings should be treated as null.booleanschemaExists(String dbSchema, Connection connection)Return true if the schema exists.voidsetColumnAliasPrefix(String columnAliasPrefix)Set the column alias prefix.voidsetDbEncrypt(DbEncrypt dbEncrypt)Set the DbEncrypt handler for this DB platform.voidsetDbFalseLiteral(String dbFalseLiteral)Set the DB FALSE literal (from the registered boolean ScalarType)voidsetDbTrueLiteral(String dbTrueLiteral)Set the DB TRUE literal (from the registered boolean ScalarType)voidsetForwardOnlyHintOnFindIterate(boolean forwardOnlyHintOnFindIterate)Set to true if the ResultSet TYPE_FORWARD_ONLY Hint should be used by default on findIterate PreparedStatements.voidsetHistorySupport(DbHistorySupport historySupport)Set the history support for this database platform.voidsetOnQueryOnly(DatabasePlatform.OnQueryOnly onQueryOnly)Set the behaviour to use when ending a read only transaction.voidsetSequenceBatchMode(boolean sequenceBatchMode)Set to false to not use sequence batch mode but instead STEP mode.voidsetSupportsResultSetConcurrencyModeUpdatable(boolean supportsResultSetConcurrencyModeUpdatable)Set to true if the ResultSet CONCUR_UPDATABLE Hint should be used by default on createNativeSqlTree() PreparedStatements.booleantableExists(Connection connection, String catalog, String schema, String table)Return true if the table exists.StringtablePartitionInit(String tableName, io.ebean.annotation.PartitionMode mode, String property, String singlePrimaryKey)Return the SQL to create an initial partition for the given table.booleantablePartitionsExist(Connection connection, String table)Return true if partitions exist for the given table.javax.persistence.PersistenceExceptiontranslate(String message, SQLException e)Translate the SQLException into a specific persistence exception if possible.StringtruncateStatement(String table)Return a statement to truncate a table.StringunQuote(String dbName)Remove quoted identifier quotes from the table or column name if present.booleanuseExtraTransactionOnIterateSecondaryQueries()Return true if the JDBC driver does not allow additional queries to execute when a resultSet is being 'streamed' as is the case with findEach() etc.
-
Constructor Details
-
DatabasePlatform
public DatabasePlatform()Instantiates a new database platform.
-
-
Method Details
-
translate
Translate the SQLException into a specific persistence exception if possible. -
configure
Configure the platform given the server configuration. -
isPlatform
Return true if this matches the given platform. -
getPlatform
Return the platform key. -
getName
Return the name of the underlying Platform in lowercase."generic" is returned when no specific database platform has been set or found.
-
isSequenceBatchMode
Return true if we are using Sequence batch mode rather than STEP. -
setSequenceBatchMode
Set to false to not use sequence batch mode but instead STEP mode. -
isSupportsNativeIlike
Return true if this database platform supports native ILIKE expression. -
isSupportsDeleteTableAlias
Return true if the platform supports delete statements with table alias. -
isCaseSensitiveCollation
Return true if the collation is case sensitive.This is expected to be used for testing only.
-
isSupportsSavepointId
Return true if the platform supports SavepointId values. -
isInlineSqlUpdateLimit
Return true if the platform supports LIMIT with sql update. -
getMaxTableNameLength
Return the maximum table name length.This is used when deriving names of intersection tables.
-
getMaxConstraintNameLength
Return the maximum constraint name allowed for the platform. -
useExtraTransactionOnIterateSecondaryQueries
Return true if the JDBC driver does not allow additional queries to execute when a resultSet is being 'streamed' as is the case with findEach() etc.Honestly, this is a workaround for a stupid MySql JDBC driver limitation.
-
createSequenceIdGenerator
public PlatformIdGenerator createSequenceIdGenerator(BackgroundExecutor be, DataSource ds, int stepSize, String seqName)Return a DB Sequence based IdGenerator.- Parameters:
be- the BackgroundExecutor that can be used to load the sequence if desiredds- the DataSourcestepSize- the sequence allocation size as defined by mapping (defaults to 50)seqName- the name of the sequence
-
getOnQueryOnly
Return the behaviour to use when ending a read only transaction. -
setOnQueryOnly
Set the behaviour to use when ending a read only transaction. -
getDbEncrypt
Return the DbEncrypt handler for this DB platform. -
setDbEncrypt
Set the DbEncrypt handler for this DB platform. -
getHistorySupport
Return the history support for this database platform. -
setHistorySupport
Set the history support for this database platform. -
isNativeArrayType
So no except for Postgres and CockroachDB. -
isNativeUuidType
Return true if the DB supports native UUID. -
getDbTypeMap
Return the mapping of JDBC to DB types.- Returns:
- the db type map
-
getDbDefaultValue
Return the mapping for DB column default values. -
getColumnAliasPrefix
Return the column alias prefix. -
setColumnAliasPrefix
Set the column alias prefix. -
getCloseQuote
Return the close quote for quoted identifiers. -
getOpenQuote
Return the open quote for quoted identifiers. -
getBooleanDbType
Return the JDBC type used to store booleans. -
getBlobDbType
Return the data type that should be used for Blob.This is typically Types.BLOB but for Postgres is Types.LONGVARBINARY for example.
-
getClobDbType
Return the data type that should be used for Clob.This is typically Types.CLOB but for Postgres is Types.VARCHAR.
-
isTreatEmptyStringsAsNull
Return true if empty strings should be treated as null.- Returns:
- true, if checks if is treat empty strings as null
-
isIdInExpandedForm
Return true if a compound ID in (...) type expression needs to be in expanded form of (a=? and b=?) or (a=? and b=?) or ... rather than (a,b) in ((?,?),(?,?),...); -
isForwardOnlyHintOnFindIterate
Return true if the ResultSet TYPE_FORWARD_ONLY Hint should be used on findIterate() and findVisit() PreparedStatements.This specifically is required for MySql when processing large results.
-
setForwardOnlyHintOnFindIterate
Set to true if the ResultSet TYPE_FORWARD_ONLY Hint should be used by default on findIterate PreparedStatements. -
isSupportsResultSetConcurrencyModeUpdatable
Return true if the ResultSet CONCUR_UPDATABLE Hint should be used on createNativeSqlTree() PreparedStatements.This specifically is required for Hana which doesn't support CONCUR_UPDATABLE
-
setSupportsResultSetConcurrencyModeUpdatable
public void setSupportsResultSetConcurrencyModeUpdatable(boolean supportsResultSetConcurrencyModeUpdatable)Set to true if the ResultSet CONCUR_UPDATABLE Hint should be used by default on createNativeSqlTree() PreparedStatements. -
isDdlAutoCommit
Normally not needed - overridden in CockroachPlatform. -
getDbIdentity
Return the DB identity/sequence features for this platform.- Returns:
- the db identity
-
getSqlLimiter
Return the SqlLimiter used to apply additional sql around a query to limit its results.Basically add the clauses for limit/offset, rownum, row_number().
- Returns:
- the sql limiter
-
getBasicSqlLimiter
Return the BasicSqlLimiter for limit/offset of SqlQuery queries. -
setDbTrueLiteral
Set the DB TRUE literal (from the registered boolean ScalarType) -
setDbFalseLiteral
Set the DB FALSE literal (from the registered boolean ScalarType) -
convertQuotedIdentifiers
Convert backticks to the platform specific open quote and close quoteSpecific plugins may implement this method to cater for platform specific naming rules.
- Parameters:
dbName- the db table or column name- Returns:
- the db table or column name with potentially platform specific quoted identifiers
-
unQuote
Remove quoted identifier quotes from the table or column name if present. -
isSelectCountWithAlias
Set to true if select count against anonymous view requires an alias. -
isSelectCountWithColumnAlias
Return true if select count with subquery needs column alias (SQL Server). -
completeSql
-
fromForUpdate
For update hint on the FROM clause (SQL server only). -
getLikeClause
Returns the like clause used by this database platform.This may include an escape clause to disable a default escape character.
-
getPersistBatchOnCascade
Return the platform default JDBC batch mode for persist cascade. -
truncateStatement
Return a statement to truncate a table. -
createSchemaIfNotExists
Create the DB schema if it does not exist.- Throws:
SQLException
-
schemaExists
Return true if the schema exists.- Throws:
SQLException
-
tableExists
public boolean tableExists(Connection connection, String catalog, String schema, String table) throws SQLExceptionReturn true if the table exists.- Throws:
SQLException
-
tablePartitionsExist
Return true if partitions exist for the given table.- Throws:
SQLException
-
tablePartitionInit
public String tablePartitionInit(String tableName, io.ebean.annotation.PartitionMode mode, String property, String singlePrimaryKey)Return the SQL to create an initial partition for the given table. -
escapeLikeString
Escapes the like string for this DB-Platform
-