All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.ebean.DatabaseBuilder Maven / Gradle / Ivy

There is a newer version: 15.8.0
Show newest version
package io.ebean;

import com.fasterxml.jackson.core.JsonFactory;
import io.ebean.annotation.*;
import io.ebean.cache.ServerCachePlugin;
import io.ebean.config.*;
import io.ebean.config.dbplatform.DatabasePlatform;
import io.ebean.config.dbplatform.DbEncrypt;
import io.ebean.config.dbplatform.DbType;
import io.ebean.config.dbplatform.IdType;
import io.ebean.datasource.DataSourceBuilder;
import io.ebean.event.*;
import io.ebean.event.changelog.ChangeLogListener;
import io.ebean.event.changelog.ChangeLogPrepare;
import io.ebean.event.changelog.ChangeLogRegister;
import io.ebean.event.readaudit.ReadAuditLogger;
import io.ebean.event.readaudit.ReadAuditPrepare;
import javax.persistence.EnumType;

import javax.sql.DataSource;
import java.time.Clock;
import java.util.*;
import java.util.function.BooleanSupplier;
import java.util.function.Consumer;
import java.util.function.Function;

/**
 * Build a Database instance.
 * 

* Note that {@link #settings()} provides access to read the builder configuration * (the getters). The DatabaseBuilder only has the methods to set builder configuration * (the setters) so use {@link #settings()} to access to everything. * *

{@code
 *
 *   // build the 'default' database using configuration
 *   // from application.properties / application.yaml
 *
 *   Database db = Database.builder()
 *     .loadFromProperties()
 *     .build();
 *
 * }
*

* Create a non-default database and not register it with {@link DB}. When * not registered the database can not by obtained via {@link DB#byName(String)}. * *

{@code
 *
 *   Database database = Database.builder()
 *     .setName("other"
 *     .loadFromProperties()
 *     .setRegister(false)
 *     .setDefaultServer(false)
 *     .addClass(EBasic.class)
 *     .build();
 *
 * }
*/ public interface DatabaseBuilder { /** * Build and return the Database instance. */ Database build(); /** * Return the settings to read the configuration that has been set. This * provides the getters/accessors to read the configuration properties. */ Settings settings(); /** * Apply configuration to this builder using a lambda. */ DatabaseBuilder apply(Consumer applyConfiguration); /** * Conditionally apply configuration to this builder via a lambda. * * @param predicate The condition to apply configuration when true. * @param apply The configuration to apply to this builder. */ default DatabaseBuilder alsoIf(BooleanSupplier predicate, Consumer apply) { if (predicate.getAsBoolean()) { apply(apply); } return this; } /** * Set the name of the Database. */ default DatabaseBuilder name(String name) { return setName(name); } /** * @deprecated migrate to {@link #name(String)}. */ @Deprecated DatabaseBuilder setName(String name); /** * Set to false if you do not want this server to be registered with the Ebean * singleton when it is created. *

* By default, this is set to true. */ default DatabaseBuilder register(boolean register) { return setRegister(register); } /** * @deprecated migrate to {@link #register(boolean)}. */ @Deprecated DatabaseBuilder setRegister(boolean register); /** * Set false if you do not want this Database to be registered as the "default" database * with the DB singleton. *

* This is only used when {@link #setRegister(boolean)} is also true. */ default DatabaseBuilder defaultDatabase(boolean defaultServer) { return setDefaultServer(defaultServer); } /** * @deprecated migrate to {@link #defaultDatabase(boolean)}. */ @Deprecated DatabaseBuilder setDefaultServer(boolean defaultServer); /** * Set the DB schema to use. This specifies to use this schema for: *

    *
  • Running Database migrations - Create and use the DB schema
  • *
  • Testing DDL - Create-all.sql DDL execution creates and uses schema
  • *
  • Testing Docker - Set default schema on connection URL
  • *
*/ default DatabaseBuilder dbSchema(String dbSchema) { return setDbSchema(dbSchema); } /** * @deprecated migrate to {@link #setDbSchema(String)} */ @Deprecated DatabaseBuilder setDbSchema(String dbSchema); /** * Set the Geometry SRID. */ default DatabaseBuilder geometrySRID(int geometrySRID) { return setGeometrySRID(geometrySRID); } /** * @deprecated migrate to {@link #geometrySRID(int)}. */ @Deprecated DatabaseBuilder setGeometrySRID(int geometrySRID); /** * Set the time zone to use when reading/writing Timestamps via JDBC. */ default DatabaseBuilder dataTimeZone(String dataTimeZone) { return setDataTimeZone(dataTimeZone); } /** * @deprecated migrate to {@link #dataTimeZone(String)}. */ @Deprecated DatabaseBuilder setDataTimeZone(String dataTimeZone); /** * Set the JDBC batch mode to use at the transaction level. *

* When INSERT or ALL is used then save(), delete() etc do not execute immediately but instead go into * a JDBC batch execute buffer that is flushed. The buffer is flushed if a query is executed, transaction ends * or the batch size is meet. */ default DatabaseBuilder persistBatch(PersistBatch persistBatch) { return setPersistBatch(persistBatch); } /** * @deprecated migrate to {@link #persistBatch(PersistBatch)}. */ @Deprecated DatabaseBuilder setPersistBatch(PersistBatch persistBatch); /** * Set the JDBC batch mode to use per save(), delete(), insert() or update() request. *

* This makes sense when a save() or delete() etc cascades and executes multiple child statements. The best caase * for this is when saving a master/parent bean this cascade inserts many detail/child beans. *

* This only takes effect when the persistBatch mode at the transaction level does not take effect. */ default DatabaseBuilder persistBatchOnCascade(PersistBatch persistBatchOnCascade) { return setPersistBatchOnCascade(persistBatchOnCascade); } /** * @deprecated migrate to {@link #persistBatchOnCascade(PersistBatch)}. */ @Deprecated DatabaseBuilder setPersistBatchOnCascade(PersistBatch persistBatchOnCascade); /** * Deprecated, please migrate to using setPersistBatch(). *

* Set to true if you what to use JDBC batching for persisting and deleting beans. *

* With this Ebean will batch up persist requests and use the JDBC batch api. * This is a performance optimisation designed to reduce the network chatter. *

* When true this is equivalent to {@code setPersistBatch(PersistBatch.ALL)} or * when false to {@code setPersistBatch(PersistBatch.NONE)} */ default DatabaseBuilder persistBatching(boolean persistBatching) { return setPersistBatching(persistBatching); } /** * @deprecated migrate to {@link #persistBatching(boolean)}. */ @Deprecated DatabaseBuilder setPersistBatching(boolean persistBatching); /** * Set the batch size used for JDBC batching. If unset this defaults to 20. *

* You can also set the batch size on the transaction. * * @see Transaction#setBatchSize(int) */ default DatabaseBuilder persistBatchSize(int persistBatchSize) { return setPersistBatchSize(persistBatchSize); } /** * @deprecated migrate to {@link #persistBatchSize(int)}. */ @Deprecated DatabaseBuilder setPersistBatchSize(int persistBatchSize); /** * Set to true to disable lazy loading by default. *

* It can be turned on per query via {@link Query#setDisableLazyLoading(boolean)}. */ default DatabaseBuilder disableLazyLoading(boolean disableLazyLoading) { return setDisableLazyLoading(disableLazyLoading); } /** * @deprecated migrate to {@link #disableLazyLoading(boolean)}. */ @Deprecated DatabaseBuilder setDisableLazyLoading(boolean disableLazyLoading); /** * Set the default batch size for lazy loading. *

* This is the number of beans or collections loaded when lazy loading is * invoked by default. *

* The default value is for this is 10 (load 10 beans or collections). *

* You can explicitly control the lazy loading batch size for a given join on * a query using +lazy(batchSize) or JoinConfig. */ default DatabaseBuilder lazyLoadBatchSize(int lazyLoadBatchSize) { return setLazyLoadBatchSize(lazyLoadBatchSize); } /** * @deprecated migrate to {@link #lazyLoadBatchSize(int)}. */ DatabaseBuilder setLazyLoadBatchSize(int lazyLoadBatchSize); /** * Set the clock used for setting the timestamps (e.g. @UpdatedTimestamp) on objects. */ default DatabaseBuilder clock(Clock clock) { return setClock(clock); } /** * @deprecated migrate to {@link #clock(Clock)}. */ @Deprecated DatabaseBuilder setClock(Clock clock); /** * Set the slow query time in millis. */ default DatabaseBuilder slowQueryMillis(long slowQueryMillis) { return setSlowQueryMillis(slowQueryMillis); } /** * @deprecated migrate to {@link #slowQueryMillis(long)}. */ @Deprecated DatabaseBuilder setSlowQueryMillis(long slowQueryMillis); /** * Set the slow query event listener. */ default DatabaseBuilder slowQueryListener(SlowQueryListener slowQueryListener) { return setSlowQueryListener(slowQueryListener); } /** * @deprecated migrate to {@link #slowQueryListener(SlowQueryListener)}. */ @Deprecated DatabaseBuilder setSlowQueryListener(SlowQueryListener slowQueryListener); /** * Put a service object into configuration such that it can be used by ebean or a plugin. *

* For example, put IgniteConfiguration in to be passed to the Ignite plugin. */ DatabaseBuilder putServiceObject(String key, Object configObject); /** * Put a service object into configuration such that it can be used by ebean or a plugin. *

* For example, put IgniteConfiguration in to be passed to the Ignite plugin. * You can also override some SPI objects that should be used for that Database. Currently, the following * objects are possible. *

    *
  • DataSourceAlertFactory (e.g. add different alert factories for different ebean instances)
  • *
  • DocStoreFactory
  • *
  • SlowQueryListener (e.g. add custom query listener for a certain ebean instance)
  • *
  • ServerCacheNotifyPlugin
  • *
*/ DatabaseBuilder putServiceObject(Class iface, T configObject); /** * Put a service object into configuration such that it can be used by ebean or a plugin. * *
{@code
   *
   *   JedisPool jedisPool = ..
   *
   *   config.putServiceObject(jedisPool);
   *
   * }
*/ DatabaseBuilder putServiceObject(Object configObject); /** * Set the Jackson JsonFactory to use. *

* If not set a default implementation will be used. */ default DatabaseBuilder jsonFactory(JsonFactory jsonFactory) { return setJsonFactory(jsonFactory); } /** * @deprecated migrate to {@link #jsonFactory(JsonFactory)}. */ DatabaseBuilder setJsonFactory(JsonFactory jsonFactory); /** * Set the JSON format to use for DateTime types. */ default DatabaseBuilder jsonDateTime(JsonConfig.DateTime jsonDateTime) { return setJsonDateTime(jsonDateTime); } /** * @deprecated migrate to {@link #jsonDateTime(JsonConfig.DateTime)}. */ DatabaseBuilder setJsonDateTime(JsonConfig.DateTime jsonDateTime); /** * Set the JSON format to use for Date types. */ default DatabaseBuilder jsonDate(JsonConfig.Date jsonDate) { return setJsonDate(jsonDate); } /** * @deprecated migrate to {@link #jsonDateTime(JsonConfig.DateTime)}. */ @Deprecated DatabaseBuilder setJsonDate(JsonConfig.Date jsonDate); /** * Set the JSON include mode used when writing JSON. *

* Set to NON_NULL or NON_EMPTY to suppress nulls or null and empty collections respectively. */ default DatabaseBuilder jsonInclude(JsonConfig.Include jsonInclude) { return setJsonInclude(jsonInclude); } /** * @deprecated migrate to {@link #jsonInclude(JsonConfig.Include)}. */ @Deprecated DatabaseBuilder setJsonInclude(JsonConfig.Include jsonInclude); /** * Set the default MutableDetection to use with {@code @DbJson} using Jackson. * * @see DbJson#mutationDetection() */ default DatabaseBuilder jsonMutationDetection(MutationDetection jsonMutationDetection) { return setJsonMutationDetection(jsonMutationDetection); } /** * @deprecated migrate to {@link #jsonMutationDetection(MutationDetection)}. */ @Deprecated DatabaseBuilder setJsonMutationDetection(MutationDetection jsonMutationDetection); /** * Set the container / clustering configuration. *

* The container holds all the Database instances and provides clustering communication * services to all the Database instances. */ default DatabaseBuilder containerConfig(ContainerConfig containerConfig) { return setContainerConfig(containerConfig); } /** * @deprecated migrate to {@link #containerConfig(ContainerConfig)}. */ @Deprecated DatabaseBuilder setContainerConfig(ContainerConfig containerConfig); /** * Set the CurrentUserProvider. This is used to populate @WhoCreated, @WhoModified and * support other audit features (who executed a query etc). */ default DatabaseBuilder currentUserProvider(CurrentUserProvider currentUserProvider) { return setCurrentUserProvider(currentUserProvider); } /** * @deprecated migrate to {@link #currentUserProvider(CurrentUserProvider)}. */ @Deprecated DatabaseBuilder setCurrentUserProvider(CurrentUserProvider currentUserProvider); /** * Set the tenancy mode to use. */ default DatabaseBuilder tenantMode(TenantMode tenantMode) { return setTenantMode(tenantMode); } /** * @deprecated migrate to {@link #tenantMode(TenantMode)}. */ @Deprecated DatabaseBuilder setTenantMode(TenantMode tenantMode); /** * Set the column name used for TenantMode.PARTITION. */ default DatabaseBuilder tenantPartitionColumn(String tenantPartitionColumn) { return setTenantPartitionColumn(tenantPartitionColumn); } /** * @deprecated migrate to {@link #tenantPartitionColumn(String)}. */ @Deprecated DatabaseBuilder setTenantPartitionColumn(String tenantPartitionColumn); /** * Set the current tenant provider. */ default DatabaseBuilder currentTenantProvider(CurrentTenantProvider currentTenantProvider) { return setCurrentTenantProvider(currentTenantProvider); } /** * @deprecated migrate to {@link #currentTenantProvider(CurrentTenantProvider)}. */ @Deprecated DatabaseBuilder setCurrentTenantProvider(CurrentTenantProvider currentTenantProvider); /** * Set the tenancy datasource provider. */ default DatabaseBuilder tenantDataSourceProvider(TenantDataSourceProvider tenantDataSourceProvider) { return setTenantDataSourceProvider(tenantDataSourceProvider); } /** * @deprecated migrate to {@link #tenantDataSourceProvider(TenantDataSourceProvider)}. */ @Deprecated DatabaseBuilder setTenantDataSourceProvider(TenantDataSourceProvider tenantDataSourceProvider); /** * Set the tenancy schema provider. */ default DatabaseBuilder tenantSchemaProvider(TenantSchemaProvider tenantSchemaProvider) { return setTenantSchemaProvider(tenantSchemaProvider); } /** * @deprecated migrate to {@link #tenantSchemaProvider(TenantSchemaProvider)}. */ @Deprecated DatabaseBuilder setTenantSchemaProvider(TenantSchemaProvider tenantSchemaProvider); /** * Set the tenancy catalog provider. */ default DatabaseBuilder tenantCatalogProvider(TenantCatalogProvider tenantCatalogProvider) { return setTenantCatalogProvider(tenantCatalogProvider); } /** * @deprecated migrate to {@link #tenantCatalogProvider(TenantCatalogProvider)}. */ @Deprecated DatabaseBuilder setTenantCatalogProvider(TenantCatalogProvider tenantCatalogProvider); /** * Set to true if dirty beans are automatically persisted. */ default DatabaseBuilder autoPersistUpdates(boolean autoPersistUpdates) { return setAutoPersistUpdates(autoPersistUpdates); } /** * @deprecated migrate to {@link #autoPersistUpdates(boolean)}. */ @Deprecated DatabaseBuilder setAutoPersistUpdates(boolean autoPersistUpdates); /** * Sets the query batch size. This defaults to 100. * * @param queryBatchSize the new query batch size */ default DatabaseBuilder queryBatchSize(int queryBatchSize) { return setQueryBatchSize(queryBatchSize); } /** * @deprecated migrate to {@link #queryBatchSize(int)}. */ @Deprecated DatabaseBuilder setQueryBatchSize(int queryBatchSize); /** * Set the default mapping for enum type. */ default DatabaseBuilder defaultEnumType(EnumType defaultEnumType) { return setDefaultEnumType(defaultEnumType); } /** * @deprecated migrate to {@link #defaultEnumType(EnumType)}. */ @Deprecated DatabaseBuilder setDefaultEnumType(EnumType defaultEnumType); /** * Set the number of sequences to fetch/preallocate when using DB sequences. *

* This is a performance optimisation to reduce the number times Ebean * requests a sequence to be used as an Id for a bean (aka reduce network * chatter). */ default DatabaseBuilder databaseSequenceBatchSize(int databaseSequenceBatchSize) { return setDatabaseSequenceBatchSize(databaseSequenceBatchSize); } /** * @deprecated migrate to {@link #databaseSequenceBatchSize(int)}. */ @Deprecated DatabaseBuilder setDatabaseSequenceBatchSize(int databaseSequenceBatchSize); /** * Set the default JDBC fetchSize hint for findList queries. */ default DatabaseBuilder jdbcFetchSizeFindList(int jdbcFetchSizeFindList) { return setJdbcFetchSizeFindList(jdbcFetchSizeFindList); } /** * @deprecated migrate to {@link #jdbcFetchSizeFindList(int)}. */ @Deprecated DatabaseBuilder setJdbcFetchSizeFindList(int jdbcFetchSizeFindList); /** * Set the default JDBC fetchSize hint for findEach/findEachWhile queries. */ default DatabaseBuilder jdbcFetchSizeFindEach(int jdbcFetchSizeFindEach) { return setJdbcFetchSizeFindEach(jdbcFetchSizeFindEach); } /** * @deprecated migrate to {@link #jdbcFetchSizeFindEach(int)}. */ @Deprecated DatabaseBuilder setJdbcFetchSizeFindEach(int jdbcFetchSizeFindEach); /** * Set the ChangeLogPrepare. *

* This is used to set user context information to the ChangeSet in the * foreground thread prior to the logging occurring in a background thread. */ default DatabaseBuilder changeLogPrepare(ChangeLogPrepare changeLogPrepare) { return setChangeLogPrepare(changeLogPrepare); } /** * @deprecated migrate to {@link #changeLogPrepare(ChangeLogPrepare)}. */ @Deprecated DatabaseBuilder setChangeLogPrepare(ChangeLogPrepare changeLogPrepare); /** * Set the ChangeLogListener which actually performs the logging of change sets * in the background. */ default DatabaseBuilder changeLogListener(ChangeLogListener changeLogListener) { return setChangeLogListener(changeLogListener); } /** * @deprecated migrate to {@link #changeLogListener(ChangeLogListener)}. */ @Deprecated DatabaseBuilder setChangeLogListener(ChangeLogListener changeLogListener); /** * Set the ChangeLogRegister which controls which ChangeLogFilter is used for each * bean type and in this way provide fine grained control over which persist requests * are included in the change log. */ default DatabaseBuilder changeLogRegister(ChangeLogRegister changeLogRegister) { return setChangeLogRegister(changeLogRegister); } /** * @deprecated migrate to {@link #changeLogRegister(ChangeLogRegister)}. */ @Deprecated DatabaseBuilder setChangeLogRegister(ChangeLogRegister changeLogRegister); /** * Set if inserts should be included in the change log by default. */ default DatabaseBuilder changeLogIncludeInserts(boolean changeLogIncludeInserts) { return setChangeLogIncludeInserts(changeLogIncludeInserts); } /** * @deprecated migrate to {@link #changeLogIncludeInserts(boolean)}. */ @Deprecated DatabaseBuilder setChangeLogIncludeInserts(boolean changeLogIncludeInserts); /** * Sets if the changelog should be written async (default = true). */ default DatabaseBuilder changeLogAsync(boolean changeLogAsync) { return setChangeLogAsync(changeLogAsync); } /** * @deprecated migrate to {@link #changeLogAsync(boolean)}. */ @Deprecated DatabaseBuilder setChangeLogAsync(boolean changeLogAsync); /** * Set the ReadAuditLogger to use. If not set the default implementation is used * which logs the read events in JSON format to a standard named SLF4J logger * (which can be configured in say logback to log to a separate log file). */ default DatabaseBuilder readAuditLogger(ReadAuditLogger readAuditLogger) { return setReadAuditLogger(readAuditLogger); } /** * @deprecated migrate to {@link #readAuditLogger(ReadAuditLogger)}. */ @Deprecated DatabaseBuilder setReadAuditLogger(ReadAuditLogger readAuditLogger); /** * Set the ReadAuditPrepare to use. *

* It is expected that an implementation is used that read user context information * (user id, user ip address etc) and sets it on the ReadEvent bean before it is sent * to the ReadAuditLogger. */ default DatabaseBuilder readAuditPrepare(ReadAuditPrepare readAuditPrepare) { return setReadAuditPrepare(readAuditPrepare); } /** * @deprecated migrate to {@link #readAuditPrepare(ReadAuditPrepare)}. */ @Deprecated DatabaseBuilder setReadAuditPrepare(ReadAuditPrepare readAuditPrepare); /** * Set the configuration for profiling. */ default DatabaseBuilder profilingConfig(ProfilingConfig profilingConfig) { return setProfilingConfig(profilingConfig); } /** * @deprecated migrate to {@link #profilingConfig(ProfilingConfig)}. */ @Deprecated DatabaseBuilder setProfilingConfig(ProfilingConfig profilingConfig); /** * Set the suffix appended to the base table to derive the view that contains the union * of the base table and the history table in order to support asOf queries. */ default DatabaseBuilder asOfViewSuffix(String asOfViewSuffix) { return setAsOfViewSuffix(asOfViewSuffix); } /** * @deprecated migrate to {@link #asOfViewSuffix(String)}. */ @Deprecated DatabaseBuilder setAsOfViewSuffix(String asOfViewSuffix); /** * Set the database column used to support history and 'As of' queries. This column is a timestamp range * or equivalent. */ default DatabaseBuilder asOfSysPeriod(String asOfSysPeriod) { return setAsOfSysPeriod(asOfSysPeriod); } /** * @deprecated migrate to {@link #asOfSysPeriod(String)}. */ @Deprecated DatabaseBuilder setAsOfSysPeriod(String asOfSysPeriod); /** * Set the history table suffix. */ default DatabaseBuilder historyTableSuffix(String historyTableSuffix) { return setHistoryTableSuffix(historyTableSuffix); } /** * @deprecated migrate to {@link #historyTableSuffix(String)}. */ @Deprecated DatabaseBuilder setHistoryTableSuffix(String historyTableSuffix); /** * Set to true if we are running in a JTA Transaction manager. */ default DatabaseBuilder useJtaTransactionManager(boolean useJtaTransactionManager) { return setUseJtaTransactionManager(useJtaTransactionManager); } /** * @deprecated migrate to {@link #useJtaTransactionManager(boolean)}. */ @Deprecated DatabaseBuilder setUseJtaTransactionManager(boolean useJtaTransactionManager); /** * Set the external transaction manager. */ default DatabaseBuilder externalTransactionManager(ExternalTransactionManager externalTransactionManager) { return setExternalTransactionManager(externalTransactionManager); } /** * @deprecated migrate to {@link #externalTransactionManager(ExternalTransactionManager)}. */ @Deprecated DatabaseBuilder setExternalTransactionManager(ExternalTransactionManager externalTransactionManager); /** * Set the ServerCachePlugin to use. */ default DatabaseBuilder serverCachePlugin(ServerCachePlugin serverCachePlugin) { return setServerCachePlugin(serverCachePlugin); } /** * @deprecated migrate to {@link #serverCachePlugin(ServerCachePlugin)}. */ @Deprecated DatabaseBuilder setServerCachePlugin(ServerCachePlugin serverCachePlugin); /** * Set to true if you want LOB's to be fetch eager by default. * By default this is set to false and LOB's must be explicitly fetched. */ default DatabaseBuilder eagerFetchLobs(boolean eagerFetchLobs) { return setEagerFetchLobs(eagerFetchLobs); } /** * @deprecated migrate to {@link #eagerFetchLobs(boolean)}. */ @Deprecated DatabaseBuilder setEagerFetchLobs(boolean eagerFetchLobs); /** * Set the max call stack to use for origin location. */ default DatabaseBuilder maxCallStack(int maxCallStack) { return setMaxCallStack(maxCallStack); } /** * @deprecated migrate to {@link #maxCallStack(int)}. */ @Deprecated DatabaseBuilder setMaxCallStack(int maxCallStack); /** * Set to true if transactions should by default rollback on checked exceptions. */ default DatabaseBuilder transactionRollbackOnChecked(boolean transactionRollbackOnChecked) { return setTransactionRollbackOnChecked(transactionRollbackOnChecked); } /** * @deprecated migrate to {@link #transactionRollbackOnChecked(boolean)}. */ @Deprecated DatabaseBuilder setTransactionRollbackOnChecked(boolean transactionRollbackOnChecked); /** * Set the Background executor schedule pool size. */ default DatabaseBuilder backgroundExecutorSchedulePoolSize(int backgroundExecutorSchedulePoolSize) { return setBackgroundExecutorSchedulePoolSize(backgroundExecutorSchedulePoolSize); } /** * @deprecated migrate to {@link #backgroundExecutorSchedulePoolSize(int)}. */ @Deprecated DatabaseBuilder setBackgroundExecutorSchedulePoolSize(int backgroundExecutorSchedulePoolSize); /** * Set the Background executor shutdown seconds. This is the time allowed for the pool to shutdown nicely * before it is forced shutdown. */ default DatabaseBuilder backgroundExecutorShutdownSecs(int backgroundExecutorShutdownSecs) { return setBackgroundExecutorShutdownSecs(backgroundExecutorShutdownSecs); } /** * @deprecated migrate to {@link #backgroundExecutorShutdownSecs(int)}. */ @Deprecated DatabaseBuilder setBackgroundExecutorShutdownSecs(int backgroundExecutorShutdownSecs); /** * Sets the background executor wrapper. The wrapper is used when a task is sent to background and should copy the thread-locals. */ default DatabaseBuilder backgroundExecutorWrapper(BackgroundExecutorWrapper backgroundExecutorWrapper) { return setBackgroundExecutorWrapper(backgroundExecutorWrapper); } /** * @deprecated migrate to {@link #backgroundExecutorWrapper(BackgroundExecutorWrapper)}. */ @Deprecated DatabaseBuilder setBackgroundExecutorWrapper(BackgroundExecutorWrapper backgroundExecutorWrapper); /** * Set the L2 cache default max size. */ default DatabaseBuilder cacheMaxSize(int cacheMaxSize) { return setCacheMaxSize(cacheMaxSize); } /** * @deprecated migrate to {@link #cacheMaxSize(int)}. */ @Deprecated DatabaseBuilder setCacheMaxSize(int cacheMaxSize); /** * Set the L2 cache default max idle time in seconds. */ default DatabaseBuilder cacheMaxIdleTime(int cacheMaxIdleTime) { return setCacheMaxIdleTime(cacheMaxIdleTime); } /** * @deprecated migrate to {@link #cacheMaxIdleTime(int)}. */ @Deprecated DatabaseBuilder setCacheMaxIdleTime(int cacheMaxIdleTime); /** * Set the L2 cache default max time to live in seconds. */ default DatabaseBuilder cacheMaxTimeToLive(int cacheMaxTimeToLive) { return setCacheMaxTimeToLive(cacheMaxTimeToLive); } /** * @deprecated migrate to {@link #cacheMaxTimeToLive(int)}. */ @Deprecated DatabaseBuilder setCacheMaxTimeToLive(int cacheMaxTimeToLive); /** * Set the L2 query cache default max size. */ default DatabaseBuilder queryCacheMaxSize(int queryCacheMaxSize) { return setQueryCacheMaxSize(queryCacheMaxSize); } /** * @deprecated migrate to {@link #queryCacheMaxSize(int)}. */ @Deprecated DatabaseBuilder setQueryCacheMaxSize(int queryCacheMaxSize); /** * Set the L2 query cache default max idle time in seconds. */ default DatabaseBuilder queryCacheMaxIdleTime(int queryCacheMaxIdleTime) { return setQueryCacheMaxIdleTime(queryCacheMaxIdleTime); } /** * @deprecated migrate to {@link #queryCacheMaxIdleTime(int)}. */ @Deprecated DatabaseBuilder setQueryCacheMaxIdleTime(int queryCacheMaxIdleTime); /** * Set the L2 query cache default max time to live in seconds. */ default DatabaseBuilder queryCacheMaxTimeToLive(int queryCacheMaxTimeToLive) { return setQueryCacheMaxTimeToLive(queryCacheMaxTimeToLive); } /** * @deprecated migrate to {@link #queryCacheMaxTimeToLive(int)}. */ @Deprecated DatabaseBuilder setQueryCacheMaxTimeToLive(int queryCacheMaxTimeToLive); /** * Set the NamingConvention. *

* If none is set the default UnderscoreNamingConvention is used. */ default DatabaseBuilder namingConvention(NamingConvention namingConvention) { return setNamingConvention(namingConvention); } /** * @deprecated migrate to {@link #namingConvention(NamingConvention)}. */ @Deprecated DatabaseBuilder setNamingConvention(NamingConvention namingConvention); /** * Set to true if all DB column and table names should use quoted identifiers. *

* For Postgres pgjdbc version 42.3.0 should be used with datasource property * quoteReturningIdentifiers set to false (refer #2303). */ default DatabaseBuilder allQuotedIdentifiers(boolean allQuotedIdentifiers) { return setAllQuotedIdentifiers(allQuotedIdentifiers); } /** * @deprecated migrate to {@link #allQuotedIdentifiers(boolean)}. */ @Deprecated DatabaseBuilder setAllQuotedIdentifiers(boolean allQuotedIdentifiers); /** * Set to true if this Database is Document store only instance (has no JDBC DB). */ DatabaseBuilder setDocStoreOnly(boolean docStoreOnly); /** * Set the configuration for the ElasticSearch integration. */ DatabaseBuilder setDocStoreConfig(DocStoreConfig docStoreConfig); /** * Set the constraint naming convention used in DDL generation. */ default DatabaseBuilder constraintNaming(DbConstraintNaming constraintNaming) { return setConstraintNaming(constraintNaming); } /** * @deprecated migrate to {@link #constraintNaming(DbConstraintNaming)}. */ @Deprecated DatabaseBuilder setConstraintNaming(DbConstraintNaming constraintNaming); /** * Set the configuration for AutoTune. */ default DatabaseBuilder autoTuneConfig(AutoTuneConfig autoTuneConfig) { return setAutoTuneConfig(autoTuneConfig); } /** * @deprecated migrate to {@link #autoTuneConfig(AutoTuneConfig)}. */ @Deprecated DatabaseBuilder setAutoTuneConfig(AutoTuneConfig autoTuneConfig); /** * Set to true to skip the startup DataSource check. */ default DatabaseBuilder skipDataSourceCheck(boolean skipDataSourceCheck) { return setSkipDataSourceCheck(skipDataSourceCheck); } /** * @deprecated migrate to {@link #skipDataSourceCheck(boolean)}. */ @Deprecated DatabaseBuilder setSkipDataSourceCheck(boolean skipDataSourceCheck); /** * Set to true if this database is used in a read only way. *

* The DataSource and read-only DataSource are expected to be the same * and use readOnly=true and autoCommit=true. */ DatabaseBuilder readOnlyDatabase(boolean readOnlyDatabase); /** * Set a DataSource. */ default DatabaseBuilder dataSource(DataSource dataSource) { return setDataSource(dataSource); } /** * @deprecated migrate to {@link #dataSource(DataSource)}. */ @Deprecated DatabaseBuilder setDataSource(DataSource dataSource); /** * Set the read only DataSource. *

* Note that the DataSource is expected to use AutoCommit true mode avoiding the need * for explicit commit (or rollback). *

* This read only DataSource will be used for implicit query only transactions. It is not * used if the transaction is created explicitly or if the query is an update or delete query. */ default DatabaseBuilder readOnlyDataSource(DataSource readOnlyDataSource) { return setReadOnlyDataSource(readOnlyDataSource); } /** * @deprecated migrate to {@link #readOnlyDataSource(DataSource)}. */ @Deprecated DatabaseBuilder setReadOnlyDataSource(DataSource readOnlyDataSource); /** * Set the configuration required to build a DataSource using Ebean's own * DataSource implementation. */ default DatabaseBuilder dataSourceBuilder(DataSourceBuilder dataSourceConfig) { return setDataSourceConfig(dataSourceConfig); } /** * @deprecated migrate to {@link #dataSourceBuilder(DataSourceBuilder)}. */ @Deprecated DatabaseBuilder setDataSourceConfig(DataSourceBuilder dataSourceConfig); /** * Set to true if Ebean should create a DataSource for use with implicit read only transactions. */ default DatabaseBuilder autoReadOnlyDataSource(boolean autoReadOnlyDataSource) { return setAutoReadOnlyDataSource(autoReadOnlyDataSource); } /** * @deprecated migrate to {@link #autoReadOnlyDataSource(boolean)}. */ @Deprecated DatabaseBuilder setAutoReadOnlyDataSource(boolean autoReadOnlyDataSource); /** * Set the configuration for the read only DataSource. */ default DatabaseBuilder readOnlyDataSourceBuilder(DataSourceBuilder readOnlyDataSourceConfig) { return setReadOnlyDataSourceConfig(readOnlyDataSourceConfig); } /** * @deprecated migrate to {@link #readOnlyDataSourceBuilder(DataSourceBuilder)}. */ @Deprecated DatabaseBuilder setReadOnlyDataSourceConfig(DataSourceBuilder readOnlyDataSourceConfig); /** * Set the value to represent TRUE in the database. *

* This is used for databases that do not support boolean natively. *

* The value set is either a Integer or a String (e.g. "1", or "T"). */ default DatabaseBuilder databaseBooleanTrue(String databaseTrue) { return setDatabaseBooleanTrue(databaseTrue); } /** * @deprecated migrate to {@link #databaseBooleanTrue(String)}. */ @Deprecated DatabaseBuilder setDatabaseBooleanTrue(String databaseTrue); /** * Set the value to represent FALSE in the database. *

* This is used for databases that do not support boolean natively. *

* The value set is either a Integer or a String (e.g. "0", or "F"). */ default DatabaseBuilder databaseBooleanFalse(String databaseFalse) { return setDatabaseBooleanFalse(databaseFalse); } /** * @deprecated migrate to {@link #databaseBooleanFalse(String)}. */ @Deprecated DatabaseBuilder setDatabaseBooleanFalse(String databaseFalse); /** * Set the number of DB sequence values that should be preallocated and cached * by Ebean. *

* This is only used for DB's that use sequences and is a performance * optimisation. This reduces the number of times Ebean needs to get a * sequence value from the Database reducing network chatter. *

* By default this value is 10 so when we need another Id (and don't have one * in our cache) Ebean will fetch 10 id's from the database. Note that when * the cache drops to have full (which is 5 by default) Ebean will fetch * another batch of Id's in a background thread. */ default DatabaseBuilder databaseSequenceBatch(int databaseSequenceBatchSize) { return setDatabaseSequenceBatch(databaseSequenceBatchSize); } /** * @deprecated migrate to {@link #databaseSequenceBatch(int)}. */ @Deprecated DatabaseBuilder setDatabaseSequenceBatch(int databaseSequenceBatchSize); /** * Explicitly set the database platform name *

* If none is set then the platform is determined automatically via the JDBC * driver information. *

* This can be used when the Database Platform can not be automatically * detected from the JDBC driver (possibly 3rd party JDBC driver). It is also * useful when you want to do offline DDL generation for a database platform * that you don't have access to. *

* Values are oracle, h2, postgres, mysql, sqlserver16, sqlserver17. */ default DatabaseBuilder databasePlatformName(String databasePlatformName) { return setDatabasePlatformName(databasePlatformName); } /** * @deprecated migrate to {@link #databasePlatformName(String)}. */ @Deprecated DatabaseBuilder setDatabasePlatformName(String databasePlatformName); /** * Explicitly set the database platform to use. *

* If none is set then the platform is determined via the databasePlatformName * or automatically via the JDBC driver information. */ default DatabaseBuilder databasePlatform(DatabasePlatform databasePlatform) { return setDatabasePlatform(databasePlatform); } /** * @deprecated migrate to {@link #databasePlatform(DatabasePlatform)}. */ @Deprecated DatabaseBuilder setDatabasePlatform(DatabasePlatform databasePlatform); /** * Set the preferred DB platform IdType. */ default DatabaseBuilder idType(IdType idType) { return setIdType(idType); } /** * @deprecated migrate to {@link #idType(IdType)}. */ @Deprecated DatabaseBuilder setIdType(IdType idType); /** * Set the EncryptKeyManager. *

* This is required when you want to use encrypted properties. *

* You can also set this in ebean.proprerties: *

*

{@code
   * # set via ebean.properties
   * ebean.encryptKeyManager=org.avaje.tests.basic.encrypt.BasicEncyptKeyManager
   * }
*/ default DatabaseBuilder encryptKeyManager(EncryptKeyManager encryptKeyManager) { return setEncryptKeyManager(encryptKeyManager); } /** * @deprecated migrate to {@link #encryptKeyManager(EncryptKeyManager)}. */ @Deprecated DatabaseBuilder setEncryptKeyManager(EncryptKeyManager encryptKeyManager); /** * Set the EncryptDeployManager. *

* This is optionally used to programmatically define which columns are * encrypted instead of using the {@link Encrypted} Annotation. */ default DatabaseBuilder encryptDeployManager(EncryptDeployManager encryptDeployManager) { return setEncryptDeployManager(encryptDeployManager); } /** * @deprecated migrate to {@link #encryptDeployManager(EncryptDeployManager)}. */ @Deprecated DatabaseBuilder setEncryptDeployManager(EncryptDeployManager encryptDeployManager); /** * Set the Encryptor used to encrypt data on the java client side (as opposed * to DB encryption functions). *

* Ebean has a default implementation that it will use if you do not set your * own Encryptor implementation. */ default DatabaseBuilder encryptor(Encryptor encryptor) { return setEncryptor(encryptor); } /** * @deprecated migrate to {@link #encryptor(Encryptor)}. */ @Deprecated DatabaseBuilder setEncryptor(Encryptor encryptor); /** * Set to true if the Database instance should be created in offline mode. *

* Typically used to create an Database instance for DDL Migration generation * without requiring a real DataSource / Database to connect to. */ default DatabaseBuilder offline(boolean dbOffline) { return setDbOffline(dbOffline); } /** * @deprecated migrate to {@link #offline(boolean)}. */ @Deprecated DatabaseBuilder setDbOffline(boolean dbOffline); /** * Set the DbEncrypt used to encrypt and decrypt properties. *

* Note that if this is not set then the DbPlatform may already have a * DbEncrypt set (H2, MySql, Postgres and Oracle platforms have a DbEncrypt) */ default DatabaseBuilder dbEncrypt(DbEncrypt dbEncrypt) { return setDbEncrypt(dbEncrypt); } /** * @deprecated migrate to {@link #dbEncrypt(DbEncrypt)}. */ @Deprecated DatabaseBuilder setDbEncrypt(DbEncrypt dbEncrypt); /** * Set the configuration for DB platform (such as UUID and custom mappings). */ default DatabaseBuilder platformConfig(PlatformConfig platformConfig) { return setPlatformConfig(platformConfig); } /** * @deprecated migrate to {@link #platformConfig(PlatformConfig)}. */ @Deprecated DatabaseBuilder setPlatformConfig(PlatformConfig platformConfig); /** * Set the DB type used to store UUID. */ default DatabaseBuilder dbUuid(PlatformConfig.DbUuid dbUuid) { return setDbUuid(dbUuid); } /** * @deprecated migrate to {@link #dbUuid(PlatformConfig.DbUuid)}. */ @Deprecated DatabaseBuilder setDbUuid(PlatformConfig.DbUuid dbUuid); /** * Sets the UUID version mode. */ default DatabaseBuilder uuidVersion(DatabaseConfig.UuidVersion uuidVersion) { return setUuidVersion(uuidVersion); } /** * @deprecated migrate to {@link #uuidVersion(DatabaseConfig.UuidVersion)}. */ @Deprecated DatabaseBuilder setUuidVersion(DatabaseConfig.UuidVersion uuidVersion); /** * Set the UUID state file. */ default DatabaseBuilder uuidStateFile(String uuidStateFile) { return setUuidStateFile(uuidStateFile); } /** * @deprecated migrate to {@link #uuidStateFile(String)}. */ @Deprecated DatabaseBuilder setUuidStateFile(String uuidStateFile); /** * Sets the V1-UUID-NodeId. */ default DatabaseBuilder uuidNodeId(String uuidNodeId) { return setUuidNodeId(uuidNodeId); } /** * @deprecated migrate to {@link #uuidNodeId(String)}. */ @Deprecated DatabaseBuilder setUuidNodeId(String uuidNodeId); /** * Set to true if LocalTime should be persisted with nanos precision. *

* Otherwise it is persisted using java.sql.Time which is seconds precision. */ default DatabaseBuilder localTimeWithNanos(boolean localTimeWithNanos) { return setLocalTimeWithNanos(localTimeWithNanos); } /** * @deprecated migrate to {@link #localTimeWithNanos(boolean)}. */ @Deprecated DatabaseBuilder setLocalTimeWithNanos(boolean localTimeWithNanos); /** * Set to true if Duration should be persisted with nanos precision (SQL DECIMAL). *

* Otherwise it is persisted with second precision (SQL INTEGER). */ default DatabaseBuilder durationWithNanos(boolean durationWithNanos) { return setDurationWithNanos(durationWithNanos); } /** * @deprecated migrate to {@link #durationWithNanos(boolean)}. */ @Deprecated DatabaseBuilder setDurationWithNanos(boolean durationWithNanos); /** * Set to true to run DB migrations on server start. *

* This is the same as config.getMigrationConfig().setRunMigration(). We have added this method here * as it is often the only thing we need to configure for migrations. */ default DatabaseBuilder runMigration(boolean runMigration) { return setRunMigration(runMigration); } /** * @deprecated migrate to {@link #runMigration(boolean)}. */ @Deprecated DatabaseBuilder setRunMigration(boolean runMigration); /** * Set to true to generate the "create all" DDL on startup. *

* Typically we want this on when we are running tests locally (and often using H2) * and we want to create the full DB schema from scratch to run tests. */ default DatabaseBuilder ddlGenerate(boolean ddlGenerate) { return setDdlGenerate(ddlGenerate); } /** * @deprecated migrate to {@link #ddlGenerate(boolean)}. */ @Deprecated DatabaseBuilder setDdlGenerate(boolean ddlGenerate); /** * Set to true to run the generated "create all DDL" on startup. *

* Typically we want this on when we are running tests locally (and often using H2) * and we want to create the full DB schema from scratch to run tests. */ default DatabaseBuilder ddlRun(boolean ddlRun) { return setDdlRun(ddlRun); } /** * @deprecated migrate to {@link #ddlRun(boolean)}. */ @Deprecated DatabaseBuilder setDdlRun(boolean ddlRun); /** * Set to false if you not want to run the extra-ddl.xml scripts. (default = true) *

* Typically we want this on when we are running tests. */ default DatabaseBuilder ddlExtra(boolean ddlExtra) { return setDdlExtra(ddlExtra); } /** * @deprecated migrate to {@link #ddlExtra(boolean)}. */ @Deprecated DatabaseBuilder setDdlExtra(boolean ddlExtra); /** * Set to true if the "drop all ddl" should be skipped. *

* Typically we want to do this when using H2 (in memory) as our test database and the drop statements * are not required so skipping the drop table statements etc makes it faster with less noise in the logs. */ default DatabaseBuilder ddlCreateOnly(boolean ddlCreateOnly) { return setDdlCreateOnly(ddlCreateOnly); } /** * @deprecated migrate to {@link #ddlCreateOnly(boolean)}. */ @Deprecated DatabaseBuilder setDdlCreateOnly(boolean ddlCreateOnly); /** * Set a SQL script to execute after the "create all" DDL has been run. *

* Typically this is a sql script that inserts test seed data when running tests. * Place a sql script in src/test/resources that inserts test seed data. */ default DatabaseBuilder ddlSeedSql(String ddlSeedSql) { return setDdlSeedSql(ddlSeedSql); } /** * @deprecated migrate to {@link #ddlSeedSql(String)}. */ @Deprecated DatabaseBuilder setDdlSeedSql(String ddlSeedSql); /** * Set a SQL script to execute before the "create all" DDL has been run. */ default DatabaseBuilder ddlInitSql(String ddlInitSql) { return setDdlInitSql(ddlInitSql); } /** * @deprecated migrate to {@link #ddlInitSql(String)}. */ @Deprecated DatabaseBuilder setDdlInitSql(String ddlInitSql); /** * Set the header to use with DDL generation. */ default DatabaseBuilder ddlHeader(String ddlHeader) { return setDdlHeader(ddlHeader); } /** * @deprecated migrate to {@link #ddlHeader(String)}. */ @Deprecated DatabaseBuilder setDdlHeader(String ddlHeader); /** * Set to false to turn off strict mode allowing non-null columns to not have a default value. */ default DatabaseBuilder ddlStrictMode(boolean ddlStrictMode) { return setDdlStrictMode(ddlStrictMode); } /** * @deprecated migrate to {@link #ddlStrictMode(boolean)}. */ @Deprecated DatabaseBuilder setDdlStrictMode(boolean ddlStrictMode); /** * Set a comma and equals delimited placeholders that are substituted in DDL scripts. */ default DatabaseBuilder ddlPlaceholders(String ddlPlaceholders) { return setDdlPlaceholders(ddlPlaceholders); } /** * @deprecated migrate to {@link #ddlPlaceholders(String)}. */ @Deprecated DatabaseBuilder setDdlPlaceholders(String ddlPlaceholders); /** * Set a map of placeholder values that are substituted in DDL scripts. */ default DatabaseBuilder ddlPlaceholderMap(Map ddlPlaceholderMap) { return setDdlPlaceholderMap(ddlPlaceholderMap); } /** * @deprecated migrate to {@link #ddlPlaceholderMap(Map)}. */ @Deprecated DatabaseBuilder setDdlPlaceholderMap(Map ddlPlaceholderMap); /** * Set to true to disable the class path search even for the case where no entity bean classes * have been registered. This can be used to start an Database instance just to use the * SQL functions such as SqlQuery, SqlUpdate etc. */ default DatabaseBuilder disableClasspathSearch(boolean disableClasspathSearch) { return setDisableClasspathSearch(disableClasspathSearch); } /** * @deprecated migrate to {@link #disableClasspathSearch(boolean)}. */ @Deprecated DatabaseBuilder setDisableClasspathSearch(boolean disableClasspathSearch); /** * Set the mode to use for Joda LocalTime support 'normal' or 'utc'. */ default DatabaseBuilder jodaLocalTimeMode(String jodaLocalTimeMode) { return setJodaLocalTimeMode(jodaLocalTimeMode); } /** * @deprecated migrate to {@link #jodaLocalTimeMode(String)}. */ @Deprecated DatabaseBuilder setJodaLocalTimeMode(String jodaLocalTimeMode); /** * Programmatically add classes (typically entities) that this server should use. *

* The class can be an Entity, Embedded type, ScalarType, BeanPersistListener, * BeanFinder or BeanPersistController. *

* If no classes are specified then the classes are found automatically via * searching the class path. * * @param cls the entity type (or other type) that should be registered by this database. */ DatabaseBuilder addClass(Class cls); /** * Register all the classes (typically entity classes). */ DatabaseBuilder addAll(Collection> classList); /** * Add a package to search for entities via class path search. *

* This is only used if classes have not been explicitly specified. */ DatabaseBuilder addPackage(String packageName); /** * Set packages to search for entities via class path search. *

* This is only used if classes have not been explicitly specified. */ DatabaseBuilder setPackages(List packages); /** * Set the list of classes (entities, listeners, scalarTypes etc) that should * be used for this database. *

* If no classes are specified then the classes are found automatically via * searching the class path. *

* Alternatively the classes can contain added via {@link #addClass(Class)}. */ DatabaseBuilder classes(Collection> classes); /** * Set to false when we still want to hit the cache after a write has occurred on a transaction. */ default DatabaseBuilder skipCacheAfterWrite(boolean skipCacheAfterWrite) { return setSkipCacheAfterWrite(skipCacheAfterWrite); } /** * @deprecated migrate to {@link #skipCacheAfterWrite(boolean)}. */ @Deprecated DatabaseBuilder setSkipCacheAfterWrite(boolean skipCacheAfterWrite); /** * Set to false if by default updates in JDBC batch should not include all properties. *

* This mode can be explicitly set per transaction. * * @see Transaction#setUpdateAllLoadedProperties(boolean) */ default DatabaseBuilder updateAllPropertiesInBatch(boolean updateAllPropertiesInBatch) { return setUpdateAllPropertiesInBatch(updateAllPropertiesInBatch); } /** * @deprecated migrate to {@link #updateAllPropertiesInBatch(boolean)}. */ @Deprecated DatabaseBuilder setUpdateAllPropertiesInBatch(boolean updateAllPropertiesInBatch); /** * Sets the resource directory. */ default DatabaseBuilder resourceDirectory(String resourceDirectory) { return setResourceDirectory(resourceDirectory); } /** * @deprecated migrate to {@link #resourceDirectory(String)}. */ @Deprecated DatabaseBuilder setResourceDirectory(String resourceDirectory); /** * Add a custom type mapping. *

*

{@code
   *
   *   // set the default mapping for BigDecimal.class/decimal
   *   config.addCustomMapping(DbType.DECIMAL, "decimal(18,6)");
   *
   *   // set the default mapping for String.class/varchar but only for Postgres
   *   config.addCustomMapping(DbType.VARCHAR, "text", Platform.POSTGRES);
   *
   * }
* * @param type The DB type this mapping should apply to * @param columnDefinition The column definition that should be used * @param platform Optionally specify the platform this mapping should apply to. */ DatabaseBuilder addCustomMapping(DbType type, String columnDefinition, Platform platform); /** * Add a custom type mapping that applies to all platforms. *

*

{@code
   *
   *   // set the default mapping for BigDecimal/decimal
   *   config.addCustomMapping(DbType.DECIMAL, "decimal(18,6)");
   *
   *   // set the default mapping for String/varchar
   *   config.addCustomMapping(DbType.VARCHAR, "text");
   *
   * }
* * @param type The DB type this mapping should apply to * @param columnDefinition The column definition that should be used */ DatabaseBuilder addCustomMapping(DbType type, String columnDefinition); /** * Register a BeanQueryAdapter instance. *

* Note alternatively you can use {@link #setQueryAdapters(List)} to set all * the BeanQueryAdapter instances. */ DatabaseBuilder add(BeanQueryAdapter beanQueryAdapter); /** * Register all the BeanQueryAdapter instances. *

* Note alternatively you can use {@link #add(BeanQueryAdapter)} to add * BeanQueryAdapter instances one at a time. */ DatabaseBuilder setQueryAdapters(List queryAdapters); /** * Set the custom IdGenerator instances. */ DatabaseBuilder setIdGenerators(List idGenerators); /** * Register a customer IdGenerator instance. */ DatabaseBuilder add(IdGenerator idGenerator); /** * Register a BeanPersistController instance. *

* Note alternatively you can use {@link #setPersistControllers(List)} to set * all the BeanPersistController instances. */ DatabaseBuilder add(BeanPersistController beanPersistController); /** * Register a BeanPostLoad instance. *

* Note alternatively you can use {@link #setPostLoaders(List)} to set * all the BeanPostLoad instances. */ DatabaseBuilder add(BeanPostLoad postLoad); /** * Register a BeanPostConstructListener instance. *

* Note alternatively you can use {@link #setPostConstructListeners(List)} to set * all the BeanPostConstructListener instances. */ DatabaseBuilder add(BeanPostConstructListener listener); /** * Set the list of BeanFindController instances. */ DatabaseBuilder setFindControllers(List findControllers); /** * Set the list of BeanPostLoader instances. */ DatabaseBuilder setPostLoaders(List postLoaders); /** * Set the list of BeanPostLoader instances. */ DatabaseBuilder setPostConstructListeners(List listeners); /** * Register all the BeanPersistController instances. *

* Note alternatively you can use {@link #add(BeanPersistController)} to add * BeanPersistController instances one at a time. */ DatabaseBuilder setPersistControllers(List persistControllers); /** * Register a BeanPersistListener instance. *

* Note alternatively you can use {@link #setPersistListeners(List)} to set * all the BeanPersistListener instances. */ DatabaseBuilder add(BeanPersistListener beanPersistListener); /** * Add a BulkTableEventListener */ DatabaseBuilder add(BulkTableEventListener bulkTableEventListener); /** * Add a ServerConfigStartup. */ DatabaseBuilder addServerConfigStartup(ServerConfigStartup configStartupListener); /** * Register all the BeanPersistListener instances. *

* Note alternatively you can use {@link #add(BeanPersistListener)} to add * BeanPersistListener instances one at a time. */ DatabaseBuilder setPersistListeners(List persistListeners); /** * Set the PersistenceContext scope to be used if one is not explicitly set on a query. *

* This defaults to {@link PersistenceContextScope#TRANSACTION}. *

* The PersistenceContextScope can specified on each query via {@link io.ebean * .Query#setPersistenceContextScope(io.ebean.PersistenceContextScope)}. If it * is not set on the query this scope is used. * * @see Query#setPersistenceContextScope(PersistenceContextScope) */ default DatabaseBuilder persistenceContextScope(PersistenceContextScope persistenceContextScope) { return setPersistenceContextScope(persistenceContextScope); } /** * @deprecated migrate to {@link #persistenceContextScope(PersistenceContextScope)}. */ @Deprecated DatabaseBuilder setPersistenceContextScope(PersistenceContextScope persistenceContextScope); /** * Set the ClassLoadConfig which is used to detect Joda, Java8 types etc and also * create new instances of plugins given a className. */ default DatabaseBuilder classLoadConfig(ClassLoadConfig classLoadConfig) { return setClassLoadConfig(classLoadConfig); } /** * @deprecated migrate to {@link #classLoadConfig(ClassLoadConfig)}. */ @Deprecated DatabaseBuilder setClassLoadConfig(ClassLoadConfig classLoadConfig); /** * Load settings from application.properties, application.yaml and other sources. *

* Uses avaje-config to load configuration properties. Goto https://avaje.io/config * for detail on how and where properties are loaded from. */ DatabaseBuilder loadFromProperties(); /** * Load the settings from the given properties */ DatabaseBuilder loadFromProperties(Properties properties); /** * Set the Jackson ObjectMapper. *

* Note that this is not strongly typed as Jackson ObjectMapper is an optional dependency. */ default DatabaseBuilder objectMapper(Object objectMapper) { return setObjectMapper(objectMapper); } /** * @deprecated migrate to {@link #objectMapper(Object)}. */ @Deprecated DatabaseBuilder setObjectMapper(Object objectMapper); /** * Set to true if you want eq("someProperty", null) to generate "1=1" rather than "is null" sql expression. *

* Setting this to true has the effect that eq(propertyName, value), ieq(propertyName, value) and * ne(propertyName, value) have no effect when the value is null. The expression factory adds a NoopExpression * which will add "1=1" into the SQL rather than "is null". */ default DatabaseBuilder expressionEqualsWithNullAsNoop(boolean expressionEqualsWithNullAsNoop) { return setExpressionEqualsWithNullAsNoop(expressionEqualsWithNullAsNoop); } /** * @deprecated migrate to {@link #expressionEqualsWithNullAsNoop(boolean)}. */ @Deprecated DatabaseBuilder setExpressionEqualsWithNullAsNoop(boolean expressionEqualsWithNullAsNoop); /** * Set to true to use native ILIKE expression if supported by the database platform (e.g. Postgres). */ default DatabaseBuilder expressionNativeIlike(boolean expressionNativeIlike) { return setExpressionNativeIlike(expressionNativeIlike); } /** * @deprecated migrate to {@link #expressionNativeIlike(boolean)}. */ @Deprecated DatabaseBuilder setExpressionNativeIlike(boolean expressionNativeIlike); /** * Set the enabled L2 cache regions (comma delimited). */ default DatabaseBuilder enabledL2Regions(String enabledL2Regions) { return setEnabledL2Regions(enabledL2Regions); } /** * @deprecated migrate to {@link #enabledL2Regions(String)}. */ @Deprecated DatabaseBuilder setEnabledL2Regions(String enabledL2Regions); /** * Set to true to disable L2 caching. Typically useful in performance testing. */ default DatabaseBuilder disableL2Cache(boolean disableL2Cache) { return setDisableL2Cache(disableL2Cache); } /** * @deprecated migrate to {@link #disableL2Cache(boolean)}. */ @Deprecated DatabaseBuilder setDisableL2Cache(boolean disableL2Cache); /** * Force the use of local only L2 cache. Effectively ignore l2 cache plugin like ebean-redis etc. */ default DatabaseBuilder localOnlyL2Cache(boolean localOnlyL2Cache) { return setLocalOnlyL2Cache(localOnlyL2Cache); } /** * @deprecated migrate to {@link #localOnlyL2Cache(boolean)}. */ @Deprecated DatabaseBuilder setLocalOnlyL2Cache(boolean localOnlyL2Cache); /** * Controls if Ebean should ignore &x64;javax.validation.contstraints.NotNull or * &x64;jakarta.validation.contstraints.NotNull * with respect to generating a NOT NULL column. *

* Normally when Ebean sees javax NotNull annotation it means that column is defined as NOT NULL. * Set this to false and the javax NotNull annotation is effectively ignored (and * we instead use Ebean's own NotNull annotation or JPA Column(nullable=false) annotation. */ default DatabaseBuilder useValidationNotNull(boolean useValidationNotNull) { return setUseValidationNotNull(useValidationNotNull); } /** * @deprecated migrate to {@link #useValidationNotNull(boolean)}. */ @Deprecated DatabaseBuilder setUseValidationNotNull(boolean useValidationNotNull); /** * Set this to true to run L2 cache notification in the foreground. *

* In general we don't want to do that as when we use a distributed cache (like Ignite, Hazelcast etc) * we are making network calls and we prefer to do this in background and not impact the response time * of the executing transaction. */ default DatabaseBuilder notifyL2CacheInForeground(boolean notifyL2CacheInForeground) { return setNotifyL2CacheInForeground(notifyL2CacheInForeground); } /** * @deprecated migrate to {@link #notifyL2CacheInForeground(boolean)}. */ @Deprecated DatabaseBuilder setNotifyL2CacheInForeground(boolean notifyL2CacheInForeground); /** * Set the time to live for ebean's internal query plan. *

* This is the plan that knows how to execute the query, read the result * and collects execution metrics. By default this is set to 5 mins. */ default DatabaseBuilder queryPlanTTLSeconds(int queryPlanTTLSeconds) { return setQueryPlanTTLSeconds(queryPlanTTLSeconds); } /** * @deprecated migrate to {@link #queryPlanTTLSeconds(int)}. */ @Deprecated DatabaseBuilder setQueryPlanTTLSeconds(int queryPlanTTLSeconds); /** * Create a new PlatformConfig based of the one held but with overridden properties by reading * properties with the given path and prefix. *

* Typically used in Db Migration generation for many platform targets that might have different * configuration for IdType, UUID, quoted identifiers etc. * * @param propertiesPath The properties path used for loading and setting properties * @param platformPrefix The prefix used for loading and setting properties * @return A copy of the PlatformConfig with overridden properties */ PlatformConfig newPlatformConfig(String propertiesPath, String platformPrefix); /** * Add a mapping location to search for xml mapping via class path search. */ DatabaseBuilder addMappingLocation(String mappingLocation); /** * Set mapping locations to search for xml mapping via class path search. *

* This is only used if classes have not been explicitly specified. */ default DatabaseBuilder mappingLocations(List mappingLocations) { return setMappingLocations(mappingLocations); } /** * @deprecated migrate to {@link #mappingLocations(List)}. */ @Deprecated DatabaseBuilder setMappingLocations(List mappingLocations); /** * Set to false such that Id properties require explicit @GeneratedValue * mapping before they are assigned Identity or Sequence generation based on platform. */ default DatabaseBuilder idGeneratorAutomatic(boolean idGeneratorAutomatic) { return setIdGeneratorAutomatic(idGeneratorAutomatic); } /** * @deprecated migrate to {@link #idGeneratorAutomatic(boolean)}. */ @Deprecated DatabaseBuilder setIdGeneratorAutomatic(boolean idGeneratorAutomatic); /** * Set to true to enable query plan capture. */ default DatabaseBuilder queryPlanEnable(boolean queryPlanEnable) { return setQueryPlanEnable(queryPlanEnable); } /** * @deprecated migrate to {@link #queryPlanEnable(boolean)}. */ @Deprecated DatabaseBuilder setQueryPlanEnable(boolean queryPlanEnable); /** * Set the query plan collection threshold in microseconds. *

* Queries executing slower than this will have bind values captured such that later * the query plan can be captured and reported. */ default DatabaseBuilder queryPlanThresholdMicros(long queryPlanThresholdMicros) { return setQueryPlanThresholdMicros(queryPlanThresholdMicros); } /** * @deprecated migrate to {@link #queryPlanThresholdMicros(long)}. */ @Deprecated DatabaseBuilder setQueryPlanThresholdMicros(long queryPlanThresholdMicros); /** * Set to true to turn on periodic capture of query plans. */ default DatabaseBuilder queryPlanCapture(boolean queryPlanCapture) { return setQueryPlanCapture(queryPlanCapture); } /** * @deprecated migrate to {@link #queryPlanCapture(boolean)}. */ @Deprecated DatabaseBuilder setQueryPlanCapture(boolean queryPlanCapture); /** * Set the frequency in seconds to capture query plans. */ default DatabaseBuilder queryPlanCapturePeriodSecs(long queryPlanCapturePeriodSecs) { return setQueryPlanCapturePeriodSecs(queryPlanCapturePeriodSecs); } /** * @deprecated migrate to {@link #queryPlanCapturePeriodSecs(long)}. */ @Deprecated DatabaseBuilder setQueryPlanCapturePeriodSecs(long queryPlanCapturePeriodSecs); /** * Set the time after which a capture query plans request will * stop capturing more query plans. *

* Effectively this controls the amount of load/time we want to * allow for query plan capture. */ default DatabaseBuilder queryPlanCaptureMaxTimeMillis(long queryPlanCaptureMaxTimeMillis) { return setQueryPlanCaptureMaxTimeMillis(queryPlanCaptureMaxTimeMillis); } /** * @deprecated migrate to {@link #queryPlanCaptureMaxTimeMillis(long)}. */ @Deprecated DatabaseBuilder setQueryPlanCaptureMaxTimeMillis(long queryPlanCaptureMaxTimeMillis); /** * Set the max number of query plans captured per request. */ default DatabaseBuilder queryPlanCaptureMaxCount(int queryPlanCaptureMaxCount) { return setQueryPlanCaptureMaxCount(queryPlanCaptureMaxCount); } /** * @deprecated migrate to {@link #queryPlanCaptureMaxCount(int)}. */ @Deprecated DatabaseBuilder setQueryPlanCaptureMaxCount(int queryPlanCaptureMaxCount); /** * Set the listener used to process captured query plans. */ default DatabaseBuilder queryPlanListener(QueryPlanListener queryPlanListener) { return setQueryPlanListener(queryPlanListener); } /** * @deprecated migrate to {@link #queryPlanListener(QueryPlanListener)}. */ @Deprecated DatabaseBuilder setQueryPlanListener(QueryPlanListener queryPlanListener); /** * Set to true if metrics should be dumped when the server is shutdown. */ default DatabaseBuilder dumpMetricsOnShutdown(boolean dumpMetricsOnShutdown) { return setDumpMetricsOnShutdown(dumpMetricsOnShutdown); } /** * @deprecated migrate to {@link #dumpMetricsOnShutdown(boolean)}. */ @Deprecated DatabaseBuilder setDumpMetricsOnShutdown(boolean dumpMetricsOnShutdown); /** * Include 'sql' or 'hash' in options such that they are included in the output. * * @param dumpMetricsOptions Example "sql,hash", "sql" */ default DatabaseBuilder dumpMetricsOptions(String dumpMetricsOptions) { return setDumpMetricsOptions(dumpMetricsOptions); } /** * @deprecated migrate to {@link #dumpMetricsOptions(String)}. */ @Deprecated DatabaseBuilder setDumpMetricsOptions(String dumpMetricsOptions); /** * Set false to turn off automatic registration of entity beans. *

* When using query beans that also generates a module info class that * can register the entity bean classes (to aDatabaseBuilder classpath scanning). * This is on by default and setting this to false turns it off. */ default DatabaseBuilder loadModuleInfo(boolean loadModuleInfo) { return setLoadModuleInfo(loadModuleInfo); } /** * @deprecated migrate to {@link #loadModuleInfo(boolean)}. */ @Deprecated DatabaseBuilder setLoadModuleInfo(boolean loadModuleInfo); /** * Set if generated SQL SELECT should include the query label as an * inline SQL comment (to help reference back from the SQL to the code * that executed the query. * * @param includeLabelInSql When true include a SQL inline comment in generated SELECT queries. */ DatabaseConfig includeLabelInSql(boolean includeLabelInSql); /** * Set the naming convention to apply to metrics names. */ default DatabaseBuilder metricNaming(Function metricNaming) { return setMetricNaming(metricNaming); } /** * @deprecated migrate to {@link #metricNaming(Function)}. */ @Deprecated DatabaseBuilder setMetricNaming(Function metricNaming); /** * Sets the length check mode. */ DatabaseConfig lengthCheck(LengthCheck lengthCheck); /** * Provides read access (getters) for the DatabaseBuilder configuration * that has been set. */ interface Settings extends DatabaseBuilder { /** * @deprecated - migrate to {@link Settings#isLoadModuleInfo()}. */ @Deprecated(forRemoval = true) boolean isAutoLoadModuleInfo(); /** * Return the Jackson JsonFactory to use. *

* If not set a default implementation will be used. */ JsonFactory getJsonFactory(); /** * Get the clock used for setting the timestamps (e.g. @UpdatedTimestamp) on objects. */ Clock getClock(); /** * Return the slow query time in millis. */ long getSlowQueryMillis(); /** * Return the slow query event listener. */ SlowQueryListener getSlowQueryListener(); /** * Return the service object given the key. */ Object getServiceObject(String key); /** * Used by ebean or plugins to obtain service objects. * *

{@code
     *
     *   JedisPool jedisPool = config.getServiceObject(JedisPool.class);
     *
     * }
* * @param cls The type of the service object to obtain * @return The service object given the class type */ @SuppressWarnings("unchecked")

P getServiceObject(Class

cls); /** * Return the JSON format used for DateTime types. */ JsonConfig.DateTime getJsonDateTime(); /** * Return the JSON format used for Date types. */ JsonConfig.Date getJsonDate(); /** * Return the JSON include mode used when writing JSON. */ JsonConfig.Include getJsonInclude(); /** * Return the default MutableDetection to use with {@code @DbJson} using Jackson. * * @see DbJson#mutationDetection() */ MutationDetection getJsonMutationDetection(); /** * Return the name of the Database. */ String getName(); /** * Return the container / clustering configuration. *

* The container holds all the Database instances and provides clustering communication * services to all the Database instances. */ ContainerConfig getContainerConfig(); /** * Return true if this server should be registered with the Ebean singleton * when it is created. *

* By default this is set to true. */ boolean isRegister(); /** * Return true if this server should be registered as the "default" server * with the Ebean singleton. *

* This is only used when {@link #setRegister(boolean)} is also true. */ boolean isDefaultServer(); /** * Return the CurrentUserProvider. This is used to populate @WhoCreated, @WhoModified and * support other audit features (who executed a query etc). */ CurrentUserProvider getCurrentUserProvider(); /** * Return the tenancy mode used. */ TenantMode getTenantMode(); /** * Return the column name used for TenantMode.PARTITION. */ String getTenantPartitionColumn(); /** * Return the current tenant provider. */ CurrentTenantProvider getCurrentTenantProvider(); /** * Return the tenancy datasource provider. */ TenantDataSourceProvider getTenantDataSourceProvider(); /** * Return the tenancy schema provider. */ TenantSchemaProvider getTenantSchemaProvider(); /** * Return the PersistBatch mode to use by default at the transaction level. *

* When INSERT or ALL is used then save(), delete() etc do not execute immediately but instead go into * a JDBC batch execute buffer that is flushed. The buffer is flushed if a query is executed, transaction ends * or the batch size is meet. */ PersistBatch getPersistBatch(); /** * Return the JDBC batch mode to use per save(), delete(), insert() or update() request. *

* This makes sense when a save() or delete() cascades and executes multiple child statements. The best case * for this is when saving a master/parent bean this cascade inserts many detail/child beans. *

* This only takes effect when the persistBatch mode at the transaction level does not take effect. */ PersistBatch getPersistBatchOnCascade(); /** * Return the batch size used for JDBC batching. This defaults to 20. */ int getPersistBatchSize(); /** * Gets the query batch size. This defaults to 100. * * @return the query batch size */ int getQueryBatchSize(); EnumType getDefaultEnumType(); /** * Return true if lazy loading is disabled on queries by default. */ boolean isDisableLazyLoading(); /** * Return the default batch size for lazy loading of beans and collections. */ int getLazyLoadBatchSize(); /** * Return the default JDBC fetchSize hint for findList queries. */ int getJdbcFetchSizeFindList(); /** * Return the default JDBC fetchSize hint for findEach/findEachWhile queries. */ int getJdbcFetchSizeFindEach(); /** * Return the ChangeLogPrepare. *

* This is used to set user context information to the ChangeSet in the * foreground thread prior to the logging occurring in a background thread. */ ChangeLogPrepare getChangeLogPrepare(); /** * Return the ChangeLogListener which actually performs the logging of change sets * in the background. */ ChangeLogListener getChangeLogListener(); /** * Return the ChangeLogRegister which controls which ChangeLogFilter is used for each * bean type and in this way provide fine grained control over which persist requests * are included in the change log. */ ChangeLogRegister getChangeLogRegister(); /** * Return true if inserts should be included in the change log by default. */ boolean isChangeLogIncludeInserts(); /** * Return true (default) if the changelog should be written async. */ boolean isChangeLogAsync(); /** * Return the ReadAuditLogger to use. */ ReadAuditLogger getReadAuditLogger(); /** * Return the ReadAuditPrepare to use. */ ReadAuditPrepare getReadAuditPrepare(); /** * Return the tenancy catalog provider. */ TenantCatalogProvider getTenantCatalogProvider(); /** * Return the configuration for profiling. */ ProfilingConfig getProfilingConfig(); /** * Return the DB schema to use. */ String getDbSchema(); /** * Return the Geometry SRID. */ int getGeometrySRID(); /** * Return the time zone to use when reading/writing Timestamps via JDBC. *

* When set a Calendar object is used in JDBC calls when reading/writing Timestamp objects. */ String getDataTimeZone(); /** * Return the suffix appended to the base table to derive the view that contains the union * of the base table and the history table in order to support asOf queries. */ String getAsOfViewSuffix(); /** * Return the database column used to support history and 'As of' queries. This column is a timestamp range * or equivalent. */ String getAsOfSysPeriod(); /** * Return the history table suffix (defaults to _history). */ String getHistoryTableSuffix(); /** * Return true if we are running in a JTA Transaction manager. */ boolean isUseJtaTransactionManager(); /** * Return the external transaction manager. */ ExternalTransactionManager getExternalTransactionManager(); /** * Return the ServerCachePlugin. */ ServerCachePlugin getServerCachePlugin(); /** * Return true if LOB's should default to fetch eager. * By default this is set to false and LOB's must be explicitly fetched. */ boolean isEagerFetchLobs(); /** * Return the max call stack to use for origin location. */ int getMaxCallStack(); /** * Return true if transactions should rollback on checked exceptions. */ boolean isTransactionRollbackOnChecked(); /** * Return the Background executor schedule pool size. Defaults to 1. */ int getBackgroundExecutorSchedulePoolSize(); /** * Return the Background executor shutdown seconds. This is the time allowed for the pool to shutdown nicely * before it is forced shutdown. */ int getBackgroundExecutorShutdownSecs(); /** * Return the background executor wrapper. */ BackgroundExecutorWrapper getBackgroundExecutorWrapper(); /** * Return true if dirty beans are automatically persisted. */ boolean isAutoPersistUpdates(); /** * Return the L2 cache default max size. */ int getCacheMaxSize(); /** * Return the L2 cache default max idle time in seconds. */ int getCacheMaxIdleTime(); /** * Return the L2 cache default max time to live in seconds. */ int getCacheMaxTimeToLive(); /** * Return the L2 query cache default max size. */ int getQueryCacheMaxSize(); /** * Return the L2 query cache default max idle time in seconds. */ int getQueryCacheMaxIdleTime(); /** * Return the L2 query cache default max time to live in seconds. */ int getQueryCacheMaxTimeToLive(); /** * Return the NamingConvention. *

* If none has been set the default UnderscoreNamingConvention is used. */ NamingConvention getNamingConvention(); /** * Return true if all DB column and table names should use quoted identifiers. */ boolean isAllQuotedIdentifiers(); /** * Return true if this Database is a Document store only instance (has no JDBC DB). */ boolean isDocStoreOnly(); /** * Return the configuration for the ElasticSearch integration. */ DocStoreConfig getDocStoreConfig(); /** * Return the constraint naming convention used in DDL generation. */ DbConstraintNaming getConstraintNaming(); /** * Return the configuration for AutoTune. */ AutoTuneConfig getAutoTuneConfig(); /** * Return true if the startup DataSource check should be skipped. */ boolean skipDataSourceCheck(); /** * Return true if this database is used in a read only way. *

* The DataSource and read-only DataSource are expected to be the same * and use readOnly=true and autoCommit=true. */ boolean readOnlyDatabase(); /** * Return the DataSource. */ DataSource getDataSource(); /** * Return the read only DataSource. */ DataSource getReadOnlyDataSource(); /** * Return the configuration to build a DataSource using Ebean's own DataSource * implementation. */ DataSourceBuilder.Settings getDataSourceConfig(); /** * Return true if Ebean should create a DataSource for use with implicit read only transactions. */ boolean isAutoReadOnlyDataSource(); /** * Return the configuration for the read only DataSource. *

* This is only used if autoReadOnlyDataSource is true. *

* The driver, url, username and password default to the configuration for the main DataSource if they are not * set on this configuration. This means there is actually no need to set any configuration here and we only * set configuration for url, username and password etc if it is different from the main DataSource. */ DataSourceBuilder.Settings getReadOnlyDataSourceConfig(); /** * Return a value used to represent TRUE in the database. *

* This is used for databases that do not support boolean natively. *

* The value returned is either a Integer or a String (e.g. "1", or "T"). */ String getDatabaseBooleanTrue(); /** * Return a value used to represent FALSE in the database. *

* This is used for databases that do not support boolean natively. *

* The value returned is either a Integer or a String (e.g. "0", or "F"). */ String getDatabaseBooleanFalse(); /** * Return the number of DB sequence values that should be preallocated. */ int getDatabaseSequenceBatchSize(); /** * Return the database platform name (can be null). *

* If null then the platform is determined automatically via the JDBC driver * information. */ String getDatabasePlatformName(); /** * Return the database platform to use for this database. */ DatabasePlatform getDatabasePlatform(); /** * Return the preferred DB platform IdType. */ IdType getIdType(); /** * Return the EncryptKeyManager. */ EncryptKeyManager getEncryptKeyManager(); /** * Return the EncryptDeployManager. *

* This is optionally used to programmatically define which columns are * encrypted instead of using the {@link Encrypted} Annotation. */ EncryptDeployManager getEncryptDeployManager(); /** * Return the Encryptor used to encrypt data on the java client side (as * opposed to DB encryption functions). */ Encryptor getEncryptor(); /** * Return true if the Database instance should be created in offline mode. */ boolean isDbOffline(); /** * Return the DbEncrypt used to encrypt and decrypt properties. *

* Note that if this is not set then the DbPlatform may already have a * DbEncrypt set and that will be used. */ DbEncrypt getDbEncrypt(); /** * Return the configuration for DB types (such as UUID and custom mappings). */ PlatformConfig getPlatformConfig(); /** * Return the PersistBatch mode to use for 'batchOnCascade' taking into account if the database * platform supports getGeneratedKeys in batch mode. */ PersistBatch appliedPersistBatchOnCascade(); /** * Returns the UUID version mode. */ DatabaseConfig.UuidVersion getUuidVersion(); /** * Return the UUID state file. */ String getUuidStateFile(); /** * Returns the V1-UUID-NodeId */ String getUuidNodeId(); /** * Return true if LocalTime should be persisted with nanos precision. */ boolean isLocalTimeWithNanos(); /** * Return true if Duration should be persisted with nanos precision (SQL DECIMAL). *

* Otherwise it is persisted with second precision (SQL INTEGER). */ boolean isDurationWithNanos(); /** * Return true if the DB migration should run on server start. */ boolean isRunMigration(); /** * Return true if the "drop all ddl" should be skipped. *

* Typically we want to do this when using H2 (in memory) as our test database and the drop statements * are not required so skipping the drop table statements etc makes it faster with less noise in the logs. */ boolean isDdlCreateOnly(); /** * Return SQL script to execute after the "create all" DDL has been run. *

* Typically this is a sql script that inserts test seed data when running tests. * Place a sql script in src/test/resources that inserts test seed data. */ String getDdlSeedSql(); /** * Return a SQL script to execute before the "create all" DDL has been run. */ String getDdlInitSql(); /** * Return true if the DDL should be generated. */ boolean isDdlGenerate(); /** * Return true if the DDL should be run. */ boolean isDdlRun(); /** * Return true, if extra-ddl.xml should be executed. */ boolean isDdlExtra(); /** * Return true if strict mode is used which includes a check that non-null columns have a default value. */ boolean isDdlStrictMode(); /** * Return the header to use with DDL generation. */ String getDdlHeader(); /** * Return a comma and equals delimited placeholders that are substituted in DDL scripts. */ String getDdlPlaceholders(); /** * Return a map of placeholder values that are substituted in DDL scripts. */ Map getDdlPlaceholderMap(); /** * Return true if the class path search should be disabled. */ boolean isDisableClasspathSearch(); /** * Return the mode to use for Joda LocalTime support 'normal' or 'utc'. */ String getJodaLocalTimeMode(); /** * Return packages to search for entities via class path search. *

* This is only used if classes have not been explicitly specified. */ List getPackages(); /** * Return the classes registered for this database. Typically, this includes * entities and perhaps listeners. */ Set> classes(); /** * Return true if L2 bean cache should be skipped once writes have occurred on a transaction. *

* This defaults to true and means that for "find by id" and "find by natural key" * queries that normally hit L2 bean cache automatically will not do so after a write/persist * on the transaction. *

*

{@code
     *
     *   // assume Customer has L2 bean caching enabled ...
     *
     *   try (Transaction transaction = DB.beginTransaction()) {
     *
     *     // this uses L2 bean cache as the transaction
     *     // ... is considered "query only" at this point
     *     Customer.find.byId(42);
     *
     *     // transaction no longer "query only" once
     *     // ... a bean has been saved etc
     *     DB.save(someBean);
     *
     *     // will NOT use L2 bean cache as the transaction
     *     // ... is no longer considered "query only"
     *     Customer.find.byId(55);
     *
     *
     *
     *     // explicit control - please use L2 bean cache
     *
     *     transaction.setSkipCache(false);
     *     Customer.find.byId(77); // hit the l2 bean cache
     *
     *
     *     // explicit control - please don't use L2 bean cache
     *
     *     transaction.setSkipCache(true);
     *     Customer.find.byId(99); // skips l2 bean cache
     *
     *   }
     *
     * }
* * @see Transaction#setSkipCache(boolean) */ boolean isSkipCacheAfterWrite(); /** * Returns true if updates in JDBC batch default to include all properties by default. */ boolean isUpdateAllPropertiesInBatch(); /** * Returns the resource directory. */ String getResourceDirectory(); /** * @deprecated - migrate to {@link Settings#classes()}. *

* Sorry if returning Set rather than List breaks code but it feels safer to * do that than a subtle change to return a shallow copy which you will not detect. */ @Deprecated(forRemoval = true) Set> getClasses(); /** * Return the BeanQueryAdapter instances. */ List getQueryAdapters(); /** * Return the custom IdGenerator instances. */ List getIdGenerators(); /** * Return the list of BeanFindController instances. */ List getFindControllers(); /** * Return the list of BeanPostLoader instances. */ List getPostLoaders(); /** * Return the list of BeanPostLoader instances. */ List getPostConstructListeners(); /** * Return the BeanPersistController instances. */ List getPersistControllers(); /** * Return the BeanPersistListener instances. */ List getPersistListeners(); /** * Return the list of BulkTableEventListener instances. */ List getBulkTableEventListeners(); /** * Return the list of ServerConfigStartup instances. */ List getServerConfigStartupListeners(); /** * Return the default PersistenceContextScope to be used if one is not explicitly set on a query. *

* The PersistenceContextScope can specified on each query via {@link io.ebean * .Query#setPersistenceContextScope(io.ebean.PersistenceContextScope)}. If it * is not set on the query this default scope is used. * * @see Query#setPersistenceContextScope(PersistenceContextScope) */ PersistenceContextScope getPersistenceContextScope(); /** * Return the ClassLoadConfig which is used to detect Joda, Java8 types etc and also * create new instances of plugins given a className. */ ClassLoadConfig getClassLoadConfig(); /** * Return the properties that we used for configuration and were set via a call to loadFromProperties(). */ Properties getProperties(); /** * Return the Jackson ObjectMapper. *

* Note that this is not strongly typed as Jackson ObjectMapper is an optional dependency. */ Object getObjectMapper(); /** * Return true if eq("someProperty", null) should to generate "1=1" rather than "is null" sql expression. */ boolean isExpressionEqualsWithNullAsNoop(); /** * Return true if native ILIKE expression should be used if supported by the database platform (e.g. Postgres). */ boolean isExpressionNativeIlike(); /** * Return the enabled L2 cache regions. */ String getEnabledL2Regions(); /** * Return true if L2 cache is disabled. */ boolean isDisableL2Cache(); /** * Return true to use local only L2 cache. Effectively ignore l2 cache plugin like ebean-redis etc. */ boolean isLocalOnlyL2Cache(); /** * Returns if we use javax.validation.constraints.NotNull */ boolean isUseValidationNotNull(); /** * Return true if L2 cache notification should run in the foreground. */ boolean isNotifyL2CacheInForeground(); /** * Return the time to live for ebean's internal query plan. */ int getQueryPlanTTLSeconds(); /** * Return mapping locations to search for xml mapping via class path search. */ List getMappingLocations(); /** * When false we need explicit @GeneratedValue mapping to assign * Identity or Sequence generated values. When true Id properties are automatically * assigned Identity or Sequence without the GeneratedValue mapping. */ boolean isIdGeneratorAutomatic(); /** * Return true if query plan capture is enabled. */ boolean isQueryPlanEnable(); /** * Return the query plan collection threshold in microseconds. */ long getQueryPlanThresholdMicros(); /** * Return true if periodic capture of query plans is enabled. */ boolean isQueryPlanCapture(); /** * Return the frequency to capture query plans. */ long getQueryPlanCapturePeriodSecs(); /** * Return the time after which a capture query plans request will * stop capturing more query plans. *

* Effectively this controls the amount of load/time we want to * allow for query plan capture. */ long getQueryPlanCaptureMaxTimeMillis(); /** * Return the max number of query plans captured per request. */ int getQueryPlanCaptureMaxCount(); /** * Return the listener used to process captured query plans. */ QueryPlanListener getQueryPlanListener(); /** * Return true if metrics should be dumped when the server is shutdown. */ boolean isDumpMetricsOnShutdown(); /** * Return the options for dumping metrics. */ String getDumpMetricsOptions(); /** * Return true if entity classes should be loaded and registered via EntityClassRegister. *

* When false we either register entity classes via application code or use classpath * scanning to find and register entity classes. */ boolean isLoadModuleInfo(); /** * Return true if generated sql select query should include an inline sql comment with the * query label or profile location label. */ boolean isIncludeLabelInSql(); /** * Return the naming convention to apply to metrics names. */ Function getMetricNaming(); /** * Returns the length check mode. */ LengthCheck getLengthCheck(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy