diff --git a/jOOQ/src/main/java/org/jooq/Configuration.java b/jOOQ/src/main/java/org/jooq/Configuration.java
index 767cea0e50..105e9fa191 100644
--- a/jOOQ/src/main/java/org/jooq/Configuration.java
+++ b/jOOQ/src/main/java/org/jooq/Configuration.java
@@ -41,25 +41,33 @@
package org.jooq;
import java.io.Serializable;
+import java.sql.Connection;
+import java.sql.Savepoint;
import java.util.Map;
+import javax.sql.DataSource;
+
import org.jooq.conf.Settings;
+import org.jooq.impl.DataSourceConnectionProvider;
import org.jooq.impl.DefaultConnectionProvider;
+import org.jooq.impl.DefaultRecordMapper;
+import org.jooq.impl.DefaultRecordMapperProvider;
import org.jooq.impl.DefaultTransactionProvider;
+import org.jooq.tools.LoggerListener;
+import org.jooq.tools.StopWatchListener;
/**
* A Configuration configures a {@link DSLContext}, providing it
- * with information for query construction, rendering and execution.
+ * with information for query rendering and execution.
*
* A Configuration wraps all information elements that are
* needed...
*
- * - by a {@link DSLContext} to construct {@link Query} objects
* - by a {@link RenderContext} to render {@link Query} objects and
* {@link QueryPart}s
* - by a {@link BindContext} to bind values to {@link Query} objects and
* {@link QueryPart}s
- * - by a {@link Query} or {@link Routine} object to execute itself
+ * - by a {@link Query} or {@link Routine} object to execute themselves
*
*
* The simplest usage of a Configuration instance is to use it
@@ -70,6 +78,83 @@ import org.jooq.impl.DefaultTransactionProvider;
* to be that short-lived. Thread-safety will then be delegated to component
* objects, such as the {@link ConnectionProvider}, the {@link ExecuteListener}
* list, etc.
+ *
+ * A Configuration is composed of types composing its state and of
+ * SPIs:
+ *
Types composing its state:
+ *
+ * - {@link #dialect()}: The {@link SQLDialect} that defines the underlying
+ * database's behaviour when generating SQL syntax, or binding variables, or
+ * when executing the query
+ * - {@link #settings()}: The {@link Settings} that define general jOOQ
+ * behaviour
+ * - {@link #data()}: A {@link Map} containing user-defined data for the
+ * {@link Scope} of this configuration.
+ *
+ * SPIs:
+ *
+ * - {@link #connectionProvider()}: The {@link ConnectionProvider} that
+ * defines the semantics of {@link ConnectionProvider#acquire()} and
+ * {@link ConnectionProvider#release(Connection)} for all queries executed in
+ * the context of this
Configuration.
+ *
+ * jOOQ-provided default implementations include:
+ *
+ * - {@link DefaultConnectionProvider}: a non-thread-safe implementation that
+ * wraps a single JDBC {@link Connection}. Ideal for batch processing.
+ * - {@link DataSourceConnectionProvider}: a possibly thread-safe
+ * implementation that wraps a JDBC {@link DataSource}. Ideal for use with
+ * connection pools, Java EE, or Spring.
+ *
+ *
+ * - {@link #transactionProvider()}: The {@link TransactionProvider} that
+ * defines and implements the behaviour of the
+ * {@link DSLContext#transaction(TransactionalRunnable)} and
+ * {@link DSLContext#transactionResult(TransactionalCallable)} methods.
+ *
+ * jOOQ-provided default implementations include:
+ *
+ * - {@link DefaultTransactionProvider}: an implementation backed by JDBC
+ * directly, via {@link Connection#commit()}, {@link Connection#rollback()}, and
+ * {@link Connection#rollback(Savepoint)} for nested transactions.
+ *
+ *
+ * - {@link #recordMapperProvider()}: The {@link RecordMapperProvider} that
+ * defines and implements the behaviour of {@link Record#into(Class)},
+ * {@link ResultQuery#fetchInto(Class)}, {@link Cursor#fetchInto(Class)}, and
+ * various related methods.
+ *
+ * jOOQ-provided default implementations include:
+ *
+ * - {@link DefaultRecordMapperProvider}: an implementation delegating to the
+ * {@link DefaultRecordMapper}, which implements the most common mapping
+ * use-cases.
+ *
+ *
+ * - {@link #recordListenerProviders()}: A set of
+ * {@link RecordListenerProvider} that implement {@link Record} fetching and
+ * storing lifecycle management, specifically for use with
+ * {@link UpdatableRecord}.
+ *
+ * jOOQ does not provide any implementations.
+ * - {@link #executeListenerProviders()}: A set of
+ * {@link ExecuteListenerProvider} that implement {@link Query} execution
+ * lifecycle management.
+ *
+ * jOOQ-provided example implementations include:
+ *
+ * - {@link LoggerListener}: generating default query execution log output
+ * - {@link StopWatchListener}: generating default query execution speed log
+ * output
+ *
+ * - {@link #visitListenerProviders()}: A set of {@link VisitListenerProvider}
+ * that implement {@link Query} rendering and variable binding lifecycle
+ * management, and that are allowed to implement query transformation - e.g. to
+ * implement row-level security, or multi-tenancy.
+ *
+ * jOOQ does not provide any implementations.
+ *
+ *
*
* @author Lukas Eder
*/