- All Known Subinterfaces:
BindContext
,BindingGetResultSetContext<U>
,BindingGetSQLInputContext<U>
,BindingGetStatementContext<U>
,BindingRegisterContext<U>
,BindingSetSQLOutputContext<U>
,BindingSetStatementContext<U>
,BindingSQLContext<U>
,CacheContext
,CloseableDSLContext
,Context<C>
,DSLContext
,ExecuteContext
,ExecuteScope
,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:
ExecuteContext
: A scope that covers a single execution of aQuery
Context
: A scope that covers a single traversal of aQueryPart
expression tree to produce a SQL string and / or a list of bind variables.VisitContext
: A scope that that covers a single traversal of aQueryPart
expression tree (just likeContext
), in the presence of at least oneVisitListener
.RecordContext
: A scope that covers a single record operation, such asUpdatableRecord.store()
.TransactionContext
: A scope that covers the execution (or nesting) of a single transaction.
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.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
-
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
-