org.jooq
Interface ExecuteListener

All Known Implementing Classes:
DefaultExecuteListener, LoggerListener, StopWatchListener

public interface ExecuteListener

An event listener for Query, Routine, or ResultSet render, prepare, bind, execute, fetch steps.

ExecuteListener is a base type for loggers, debuggers, profilers, data collectors that can be hooked into a jOOQ Factory using the Settings.getExecuteListeners() property, passing Settings to Factory.Factory(java.sql.Connection, SQLDialect, Settings). Advanced ExecuteListeners can also provide custom implementations of Connection, PreparedStatement and ResultSet to jOOQ in apropriate methods. For convenience, consider extending DefaultExecuteListener instead of implementing this interface. This will prevent compilation errors in future versions of jOOQ, when this interface might get new methods.

The following table explains how every type of statement / operation invokes callback methods in the correct order for all registered ExecuteListeners. Find a legend below the table for the various use cases.

Callback method Use case [1] Use case [2] Use case [3] Use case [4] Use case [5] Use case [6]
start(ExecuteContext) Yes, 1x Yes, 1x Yes, 1x Yes, 1x Yes, 1x Yes, 1x
renderStart(ExecuteContext) Yes, 1x Yes, 1x No Yes, 1x Yes, Nx (for every query) Yes, 1x
renderEnd(ExecuteContext) Yes, 1x Yes, 1x No Yes, 1x Yes, Nx (for every query) Yes, 1x
prepareStart(ExecuteContext) Yes, 1x Yes, 1x No Yes, 1x Yes, Nx (for every query) Yes, 1x
prepareEnd(ExecuteContext) Yes, 1x Yes, 1x No Yes, 1x Yes, Nx (for every query) Yes, 1x
bindStart(ExecuteContext) Yes, 1x No No Yes, Nx (for every value set) No Yes, 1x
bindEnd(ExecuteContext) Yes, 1x No No Yes, Nx (for every value set) No Yes, 1
executeStart(ExecuteContext) Yes, 1x Yes, 1x No Yes, 1x Yes, 1x Yes, 1x
executeEnd(ExecuteContext) Yes, 1x Yes, 1x No Yes, 1x Yes, 1x Yes, 1x
fetchStart(ExecuteContext) Yes, 1x (Nx for ResultQuery.fetchMany() Yes, 1x (Nx for ResultQuery.fetchMany() Yes, 1x No No No
resultStart(ExecuteContext) Yes, 1x (Nx for Cursor.fetch(int) Yes, 1x (Nx for Cursor.fetch(int) Yes, 1x No No No
recordStart(ExecuteContext)
Yes, Nx Yes, Nx Yes, Nx No No No
recordEnd(ExecuteContext) Yes, Nx Yes, Nx Yes, Nx No No No
resultEnd(ExecuteContext) Yes, 1x (Nx for Cursor.fetch(int) Yes, 1x (Nx for Cursor.fetch(int) Yes, 1x No No No
fetchEnd(ExecuteContext) Yes, 1x (Nx for ResultQuery.fetchMany() Yes, 1x (Nx for ResultQuery.fetchMany() Yes, 1x No No No
end(ExecuteContext) Yes, 1x Yes, 1x Yes, 1x Yes, 1x Yes, 1x Yes, 1x

Legend:

  1. Used with ResultQuery of statement type StatementType.PREPARED_STATEMENT
  2. Used with ResultQuery of statement type StatementType.STATIC_STATEMENT
  3. Used with Factory.fetch(ResultSet) or with InsertResultStep.fetch()
  4. Used with Factory.batch(Query)
  5. Used with Factory.batch(Query[])
  6. Used with a Routine standalone call

If nothing is specified, the default is to use LoggerListener and StopWatchListener as the only event listeners.

Author:
Lukas Eder

Method Summary
 void bindEnd(ExecuteContext ctx)
          Called after binding variables to the PreparedStatement Available attributes from ExecuteContext: ExecuteContext.getConnection(): The connection used for execution ExecuteContext.configuration(): The execution configuration ExecuteContext.query(): The Query object, if a jOOQ query is being executed or null otherwise ExecuteContext.routine(): The Routine object, if a jOOQ routine is being executed or null otherwise ExecuteContext.sql(): The rendered SQL statement that is about to be executed, or null if the SQL statement is unknown..
 void bindStart(ExecuteContext ctx)
          Called before binding variables to the PreparedStatement Available attributes from ExecuteContext: ExecuteContext.getConnection(): The connection used for execution ExecuteContext.configuration(): The execution configuration ExecuteContext.query(): The Query object, if a jOOQ query is being executed or null otherwise ExecuteContext.routine(): The Routine object, if a jOOQ routine is being executed or null otherwise ExecuteContext.sql(): The rendered SQL statement that is about to be executed, or null if the SQL statement is unknown..
 void end(ExecuteContext ctx)
          Called at the end of the execution lifecycle..
 void executeEnd(ExecuteContext ctx)
          Called after executing a statement Available attributes from ExecuteContext: ExecuteContext.getConnection(): The connection used for execution ExecuteContext.configuration(): The execution configuration ExecuteContext.query(): The Query object, if a jOOQ query is being executed or null otherwise ExecuteContext.routine(): The Routine object, if a jOOQ routine is being executed or null otherwise ExecuteContext.sql(): The rendered SQL statement that is about to be executed, or null if the SQL statement is unknown..
 void executeStart(ExecuteContext ctx)
          Called before executing a statement Available attributes from ExecuteContext: ExecuteContext.getConnection(): The connection used for execution ExecuteContext.configuration(): The execution configuration ExecuteContext.query(): The Query object, if a jOOQ query is being executed or null otherwise ExecuteContext.routine(): The Routine object, if a jOOQ routine is being executed or null otherwise ExecuteContext.sql(): The rendered SQL statement that is about to be executed, or null if the SQL statement is unknown..
 void fetchEnd(ExecuteContext ctx)
          Called after fetching data from a ResultSet.
 void fetchStart(ExecuteContext ctx)
          Called before fetching data from a ResultSet.
 void prepareEnd(ExecuteContext ctx)
          Called after preparing / creating the SQL statement Available attributes from ExecuteContext: ExecuteContext.getConnection(): The connection used for execution ExecuteContext.configuration(): The execution configuration ExecuteContext.query(): The Query object, if a jOOQ query is being executed or null otherwise ExecuteContext.routine(): The Routine object, if a jOOQ routine is being executed or null otherwise ExecuteContext.sql(): The rendered SQL statement that is about to be executed, or null if the SQL statement is unknown..
 void prepareStart(ExecuteContext ctx)
          Called before preparing / creating the SQL statement Available attributes from ExecuteContext: ExecuteContext.getConnection(): The connection used for execution ExecuteContext.configuration(): The execution configuration ExecuteContext.query(): The Query object, if a jOOQ query is being executed or null otherwise ExecuteContext.routine(): The Routine object, if a jOOQ routine is being executed or null otherwise ExecuteContext.sql(): The rendered SQL statement that is about to be executed, or null if the SQL statement is unknown..
 void recordEnd(ExecuteContext ctx)
          Called after fetching a record from a ResultSet Available attributes from ExecuteContext: ExecuteContext.getConnection(): The connection used for execution ExecuteContext.configuration(): The execution configuration ExecuteContext.query(): The Query object, if a jOOQ query is being executed or null otherwise ExecuteContext.routine(): The Routine object, if a jOOQ routine is being executed or null otherwise ExecuteContext.sql(): The rendered SQL statement that is about to be executed, or null if the SQL statement is unknown..
 void recordStart(ExecuteContext ctx)
          Called before fetching a record from a ResultSet Available attributes from ExecuteContext: ExecuteContext.getConnection(): The connection used for execution ExecuteContext.configuration(): The execution configuration ExecuteContext.query(): The Query object, if a jOOQ query is being executed or null otherwise ExecuteContext.routine(): The Routine object, if a jOOQ routine is being executed or null otherwise ExecuteContext.sql(): The rendered SQL statement that is about to be executed, or null if the SQL statement is unknown..
 void renderEnd(ExecuteContext ctx)
          Called after rendering SQL from a QueryPart Available attributes from ExecuteContext: ExecuteContext.getConnection(): The connection used for execution ExecuteContext.configuration(): The execution configuration ExecuteContext.query(): The Query object, if a jOOQ query is being executed or null otherwise ExecuteContext.routine(): The Routine object, if a jOOQ routine is being executed or null otherwise ExecuteContext.sql(): The rendered SQL statement that is about to be executed, or null if the SQL statement is unknown..
 void renderStart(ExecuteContext ctx)
          Called before rendering SQL from a QueryPart Available attributes from ExecuteContext: ExecuteContext.getConnection(): The connection used for execution ExecuteContext.configuration(): The execution configuration ExecuteContext.query(): The Query object, if a jOOQ query is being executed or null otherwise ExecuteContext.routine(): The Routine object, if a jOOQ routine is being executed or null otherwise
 void resultEnd(ExecuteContext ctx)
          Called after fetching a set of records from a ResultSet Available attributes from ExecuteContext: ExecuteContext.getConnection(): The connection used for execution ExecuteContext.configuration(): The execution configuration ExecuteContext.query(): The Query object, if a jOOQ query is being executed or null otherwise ExecuteContext.routine(): The Routine object, if a jOOQ routine is being executed or null otherwise ExecuteContext.sql(): The rendered SQL statement that is about to be executed, or null if the SQL statement is unknown..
 void resultStart(ExecuteContext ctx)
          Called before fetching a set of records from a ResultSet Available attributes from ExecuteContext: ExecuteContext.getConnection(): The connection used for execution ExecuteContext.configuration(): The execution configuration ExecuteContext.query(): The Query object, if a jOOQ query is being executed or null otherwise ExecuteContext.routine(): The Routine object, if a jOOQ routine is being executed or null otherwise ExecuteContext.sql(): The rendered SQL statement that is about to be executed, or null if the SQL statement is unknown..
 void start(ExecuteContext ctx)
          Called to initialise an ExecuteListener Available attributes from ExecuteContext: ExecuteContext.getConnection(): The connection used for execution ExecuteContext.configuration(): The execution configuration ExecuteContext.query(): The Query object, if a jOOQ query is being executed or null otherwise ExecuteContext.routine(): The Routine object, if a jOOQ routine is being executed or null otherwise Overridable attributes in ExecuteContext: ExecuteContext.setConnection(Connection): The connection used for execution.
 

Method Detail

start

void start(ExecuteContext ctx)
Called to initialise an ExecuteListener

Available attributes from ExecuteContext:

Overridable attributes in ExecuteContext:


renderStart

void renderStart(ExecuteContext ctx)
Called before rendering SQL from a QueryPart

Available attributes from ExecuteContext:


renderEnd

void renderEnd(ExecuteContext ctx)
Called after rendering SQL from a QueryPart

Available attributes from ExecuteContext:

Overridable attributes in ExecuteContext:


prepareStart

void prepareStart(ExecuteContext ctx)
Called before preparing / creating the SQL statement

Available attributes from ExecuteContext:

Overridable attributes in ExecuteContext:


prepareEnd

void prepareEnd(ExecuteContext ctx)
Called after preparing / creating the SQL statement

Available attributes from ExecuteContext:

Overridable attributes in ExecuteContext:


bindStart

void bindStart(ExecuteContext ctx)
Called before binding variables to the PreparedStatement

Available attributes from ExecuteContext:

Overridable attributes in ExecuteContext:

Note that this method is not called when executing queries of type StatementType.STATIC_STATEMENT


bindEnd

void bindEnd(ExecuteContext ctx)
Called after binding variables to the PreparedStatement

Available attributes from ExecuteContext:

Note that this method is not called when executing queries of type StatementType.STATIC_STATEMENT


executeStart

void executeStart(ExecuteContext ctx)
Called before executing a statement

Available attributes from ExecuteContext:


executeEnd

void executeEnd(ExecuteContext ctx)
Called after executing a statement

Available attributes from ExecuteContext:

Overridable attributes in ExecuteContext:


fetchStart

void fetchStart(ExecuteContext ctx)
Called before fetching data from a ResultSet.

Available attributes from ExecuteContext:

Overridable attributes in ExecuteContext:

In case of multiple ResultSets with ResultQuery.fetchMany(), this is called several times, once per ResultSet

Note that this method is not called when executing queries that do not return a result, or when executing routines.


resultStart

void resultStart(ExecuteContext ctx)
Called before fetching a set of records from a ResultSet

Available attributes from ExecuteContext:

Note that this method is not called when executing queries that do not return a result, or when executing routines. This is also not called when fetching single records, with Cursor.fetchOne() for instance.


recordStart

void recordStart(ExecuteContext ctx)
Called before fetching a record from a ResultSet

Available attributes from ExecuteContext:

Note that this method is not called when executing queries that do not return a result, or when executing routines.


recordEnd

void recordEnd(ExecuteContext ctx)
Called after fetching a record from a ResultSet

Available attributes from ExecuteContext:

Note that this method is not called when executing queries that do not return a result, or when executing routines.


resultEnd

void resultEnd(ExecuteContext ctx)
Called after fetching a set of records from a ResultSet

Available attributes from ExecuteContext:

Note that this method is not called when executing queries that do not return a result, or when executing routines. This is also not called when fetching single records, with Cursor.fetchOne() for instance.


fetchEnd

void fetchEnd(ExecuteContext ctx)
Called after fetching data from a ResultSet.

Available attributes from ExecuteContext:

In case of multiple ResultSets with ResultQuery.fetchMany(), this is called several times, once per ResultSet

Note that this method is not called when executing queries that do not return a result, or when executing routines.


end

void end(ExecuteContext ctx)
Called at the end of the execution lifecycle..

Available attributes from ExecuteContext:



Copyright © 2012. All Rights Reserved.