- All Known Subinterfaces:
BindContext
,BindingGetResultSetContext<U>
,BindingGetSQLInputContext<U>
,BindingGetStatementContext<U>
,BindingRegisterContext<U>
,BindingScope
,BindingSetSQLOutputContext<U>
,BindingSetStatementContext<U>
,BindingSQLContext<U>
,CacheContext
,CloseableDSLContext
,Context<C>
,DSLContext
,ExecuteContext
,ExecuteScope
,GeneratorContext<R,
,X, T> Meta
,Migration
,MigrationContext
,ParseContext
,RecordContext
,RenderContext
,ResourceManagingScope
,TransactionContext
,VisitContext
- All Known Implementing Classes:
DefaultCloseableDSLContext
,DefaultDSLContext
The scope of the various objects contained in this type (e.g.
configuration()
, settings()
, etc.) are implementation
dependent and will be specified by the concrete subtype of
Scope
. Examples of such scope types are:
Context
: Used for a single traversal of aQueryPart
expression tree to produce a SQL string and / or a list of bind variables.DSLContext
: TheDSL
API that createsQuery
instances in the context of aConfiguration
. It shares the wrappedConfiguration
's lifecycle.ExecuteContext
: Used for a single execution of aQuery
, containing JDBC resources and other execution relevant objects. Can be accessed by theExecuteListener
SPI.ParseContext
: Used for a single parse call. Can be accessed by theParseListener
SPI.RecordContext
: Used a single record operation, such asUpdatableRecord.store()
. Can be accessed by theRecordListener
SPI.TransactionContext
: A scope that covers the execution (or nesting) of a single transaction. Can be accessed by theTransactionListener
SPI.VisitContext
: A scope that that covers a single traversal of aQueryPart
expression tree (just likeContext
). Can be accessed by theVisitListener
SPI.
One of Scope
's most interesting features for client code
implementing any SPI is the data()
map, which provides access to a
Map
where client code can register user-defined values for the entire
lifetime of a scope. For instance, in an ExecuteListener
implementation that measures time for fetching data, it is perfectly possible
to store timestamps in that map:
class FetchTimeMeasuringListener extends DefaultExecuteListener {
@Override
public void fetchStart(ExecuteContext ctx) {
// Put any arbitrary object in this map:
ctx.data("org.jooq.example.fetch-start-time", System.nanoTime());
}
@Override
public void fetchEnd(ExecuteContext ctx) {
// Retrieve that object again in a later step:
Long startTime = (Long) ctx.data("org.jooq.example.fetch-start-time");
System.out.println("Time taken: " + (System.nanoTime() - startTime) / 1000 / 1000.0 + " ms");
}
}
- Author:
- Lukas Eder
-
Method Summary
Modifier and TypeMethodDescription@NotNull Configuration
The configuration of the current scope.@NotNull Instant
The time, according toConfiguration.clock()
, when thisScope
was created.data()
Get all custom data from thisScope
.@Nullable Object
Get some custom data from thisScope
.@Nullable Object
Set some custom data to thisScope
.@NotNull SQLDialect
dialect()
TheSQLDialect
wrapped by this context.@NotNull DSLContext
dsl()
Wrap theconfiguration()
in aDSLContext
, providing access to the configuration-contextual DSL to construct executable queries.@NotNull SQLDialect
family()
TheSQLDialect.family()
wrapped by this context.@NotNull Settings
settings()
The settings wrapped by this context.
-
Method Details
-
creationTime
The time, according toConfiguration.clock()
, when thisScope
was created. -
configuration
The configuration of the current scope. -
dsl
Wrap theconfiguration()
in aDSLContext
, providing access to the configuration-contextual DSL to construct executable queries. -
settings
The settings wrapped by this context.This method is a convenient way of accessing
configuration().settings()
. -
dialect
TheSQLDialect
wrapped by this context.This method is a convenient way of accessing
configuration().dialect()
. -
family
TheSQLDialect.family()
wrapped by this context.This method is a convenient way of accessing
configuration().family()
. -
data
Get all custom data from thisScope
.This is custom data that was previously set to the context using
data(Object, Object)
. Use custom data if you want to pass data toQueryPart
objects for a givenScope
.- Returns:
- The custom data. This is never
null
-
data
Get some custom data from thisScope
.This is custom data that was previously set to the context using
data(Object, Object)
. Use custom data if you want to pass data toQueryPart
objects for a givenScope
- Parameters:
key
- A key to identify the custom data- Returns:
- The custom data or
null
if no such data is contained in thisScope
-
data
Set some custom data to thisScope
.This is custom data that was previously set to the context using
data(Object, Object)
. Use custom data if you want to pass data toQueryPart
objects for a givenScope
.- Parameters:
key
- A key to identify the custom datavalue
- The custom data- Returns:
- The previously set custom data or
null
if no data was previously set for the given key
-