public class ProxyDataSourceBuilder extends Object
ProxyDataSource.| Modifier and Type | Class and Description |
|---|---|
static interface |
ProxyDataSourceBuilder.FormatQueryCallback
Functional interface to be called for formatting a query.
|
static interface |
ProxyDataSourceBuilder.SingleMethodExecution
Functional interface to simplify adding
MethodExecutionListener. |
static interface |
ProxyDataSourceBuilder.SingleQueryExecution
Functional interface to simplify adding
QueryExecutionListener. |
| Constructor and Description |
|---|
ProxyDataSourceBuilder() |
ProxyDataSourceBuilder(DataSource dataSource) |
public ProxyDataSourceBuilder()
public ProxyDataSourceBuilder(DataSource dataSource)
public static ProxyDataSourceBuilder create()
public static ProxyDataSourceBuilder create(DataSource dataSource)
public static ProxyDataSourceBuilder create(String dataSourceName, DataSource dataSource)
public ProxyDataSourceBuilder dataSource(DataSource dataSource)
dataSource - actual datasourcepublic ProxyDataSourceBuilder logQueryByCommons()
CommonsQueryLoggingListener.public ProxyDataSourceBuilder logQueryByCommons(CommonsLogLevel logLevel)
CommonsQueryLoggingListener.logLevel - log level for commonspublic ProxyDataSourceBuilder logQueryByCommons(String commonsLoggerName)
CommonsQueryLoggingListener.commonsLoggerName - commons logger namepublic ProxyDataSourceBuilder logQueryByCommons(CommonsLogLevel logLevel, String commonsLoggerName)
CommonsQueryLoggingListener.logLevel - log level for commonscommonsLoggerName - commons logger namepublic ProxyDataSourceBuilder logSlowQueryByCommons(long thresholdTime, TimeUnit timeUnit)
CommonsSlowQueryListener.thresholdTime - slow query threshold timetimeUnit - slow query threshold time unitpublic ProxyDataSourceBuilder logSlowQueryByCommons(long thresholdTime, TimeUnit timeUnit, CommonsLogLevel logLevel)
CommonsSlowQueryListener.thresholdTime - slow query threshold timetimeUnit - slow query threshold time unitlogLevel - log level for commonspublic ProxyDataSourceBuilder logSlowQueryByCommons(long thresholdTime, TimeUnit timeUnit, String logName)
CommonsSlowQueryListener.thresholdTime - slow query threshold timetimeUnit - slow query threshold time unitlogName - commons logger namepublic ProxyDataSourceBuilder logSlowQueryByCommons(long thresholdTime, TimeUnit timeUnit, CommonsLogLevel logLevel, String logName)
CommonsSlowQueryListener.thresholdTime - slow query threshold timetimeUnit - slow query threshold time unitlogLevel - log level for commonslogName - commons logger namepublic ProxyDataSourceBuilder logQueryBySlf4j()
SLF4JQueryLoggingListener.public ProxyDataSourceBuilder logQueryBySlf4j(SLF4JLogLevel logLevel)
SLF4JQueryLoggingListener.logLevel - log level for slf4jpublic ProxyDataSourceBuilder logQueryBySlf4j(String slf4jLoggerName)
SLF4JQueryLoggingListener.slf4jLoggerName - slf4j logger namepublic ProxyDataSourceBuilder logQueryBySlf4j(SLF4JLogLevel logLevel, String slf4jLoggerName)
SLF4JQueryLoggingListener.logLevel - log level for slf4jslf4jLoggerName - slf4j logger namepublic ProxyDataSourceBuilder logSlowQueryBySlf4j(long thresholdTime, TimeUnit timeUnit)
SLF4JSlowQueryListener.thresholdTime - slow query threshold timetimeUnit - slow query threshold time unitpublic ProxyDataSourceBuilder logSlowQueryBySlf4j(long thresholdTime, TimeUnit timeUnit, SLF4JLogLevel logLevel)
SLF4JSlowQueryListener.thresholdTime - slow query threshold timetimeUnit - slow query threshold time unitlogLevel - log level for slf4jpublic ProxyDataSourceBuilder logSlowQueryBySlf4j(long thresholdTime, TimeUnit timeUnit, String loggerName)
SLF4JSlowQueryListener.thresholdTime - slow query threshold timetimeUnit - slow query threshold time unitloggerName - slf4j logger namepublic ProxyDataSourceBuilder logSlowQueryBySlf4j(long thresholdTime, TimeUnit timeUnit, SLF4JLogLevel logLevel, String loggerName)
SLF4JSlowQueryListener.thresholdTime - slow query threshold timetimeUnit - slow query threshold time unitlogLevel - log level for slf4jloggerName - slf4j logger namepublic ProxyDataSourceBuilder logQueryByJUL()
JULQueryLoggingListener.public ProxyDataSourceBuilder logQueryByJUL(Level logLevel)
JULQueryLoggingListener.logLevel - log level for JULpublic ProxyDataSourceBuilder logQueryByJUL(String julLoggerName)
JULQueryLoggingListener.julLoggerName - JUL logger namepublic ProxyDataSourceBuilder logQueryByJUL(Level logLevel, String julLoggerName)
JULQueryLoggingListener.logLevel - log level for JULjulLoggerName - JUL logger namepublic ProxyDataSourceBuilder logSlowQueryByJUL(long thresholdTime, TimeUnit timeUnit)
JULSlowQueryListener.thresholdTime - slow query threshold timetimeUnit - slow query threshold time unitpublic ProxyDataSourceBuilder logSlowQueryByJUL(long thresholdTime, TimeUnit timeUnit, Level logLevel)
JULSlowQueryListener.thresholdTime - slow query threshold timetimeUnit - slow query threshold time unitlogLevel - log level for JULpublic ProxyDataSourceBuilder logSlowQueryByJUL(long thresholdTime, TimeUnit timeUnit, String loggerName)
JULSlowQueryListener.thresholdTime - slow query threshold timetimeUnit - slow query threshold time unitloggerName - JUL logger namepublic ProxyDataSourceBuilder logSlowQueryByJUL(long thresholdTime, TimeUnit timeUnit, Level logLevel, String loggerName)
JULSlowQueryListener.thresholdTime - slow query threshold timetimeUnit - slow query threshold time unitlogLevel - log level for JULloggerName - JUL logger namepublic ProxyDataSourceBuilder logQueryByLog4j()
Log4jQueryLoggingListener.public ProxyDataSourceBuilder logQueryByLog4j(Log4jLogLevel log4jLogLevel)
Log4jQueryLoggingListener.log4jLogLevel - log level for log4jpublic ProxyDataSourceBuilder logQueryByLog4j(String loggerName)
Log4jQueryLoggingListener.loggerName - log4j logger namepublic ProxyDataSourceBuilder logQueryByLog4j(Log4jLogLevel logLevel, String loggerName)
Log4jQueryLoggingListener.logLevel - log level for log4jloggerName - log4j logger namepublic ProxyDataSourceBuilder logSlowQueryByLog4j(long thresholdTime, TimeUnit timeUnit)
Log4jSlowQueryListener.thresholdTime - slow query threshold timetimeUnit - slow query threshold time unitpublic ProxyDataSourceBuilder logSlowQueryByLog4j(long thresholdTime, TimeUnit timeUnit, Log4jLogLevel logLevel)
Log4jSlowQueryListener.thresholdTime - slow query threshold timetimeUnit - slow query threshold time unitlogLevel - log level for log4jpublic ProxyDataSourceBuilder logSlowQueryByLog4j(long thresholdTime, TimeUnit timeUnit, String loggerName)
Log4jSlowQueryListener.thresholdTime - slow query threshold timetimeUnit - slow query threshold time unitloggerName - Log4j logger namepublic ProxyDataSourceBuilder logSlowQueryByLog4j(long thresholdTime, TimeUnit timeUnit, Log4jLogLevel logLevel, String loggerName)
Log4jSlowQueryListener.thresholdTime - slow query threshold timetimeUnit - slow query threshold time unitlogLevel - log level for JULloggerName - Log4j logger namepublic ProxyDataSourceBuilder logQueryToSysOut()
SystemOutQueryLoggingListener.public ProxyDataSourceBuilder logSlowQueryToSysOut(long thresholdTime, TimeUnit timeUnit)
SystemOutSlowQueryListener.public ProxyDataSourceBuilder countQuery()
DataSourceQueryCountListener.public ProxyDataSourceBuilder countQuery(QueryCountStrategy queryCountStrategy)
DataSourceQueryCountListener.public ProxyDataSourceBuilder listener(QueryExecutionListener listener)
listener - a listener to registerpublic ProxyDataSourceBuilder listener(JdbcLifecycleEventListener listener)
JdbcLifecycleEventListener.listener - a listener to registerpublic ProxyDataSourceBuilder beforeQuery(ProxyDataSourceBuilder.SingleQueryExecution callback)
QueryExecutionListener that performs given lambda on QueryExecutionListener.beforeQuery(ExecutionInfo, List).callback - a lambda function executed on QueryExecutionListener.beforeQuery(ExecutionInfo, List)public ProxyDataSourceBuilder afterQuery(ProxyDataSourceBuilder.SingleQueryExecution callback)
QueryExecutionListener that performs given lambda on QueryExecutionListener.afterQuery(ExecutionInfo, List).callback - a lambda function executed on QueryExecutionListener.afterQuery(ExecutionInfo, List)public ProxyDataSourceBuilder asJson()
This method is mutually exclusive to formatQuery(FormatQueryCallback).
public ProxyDataSourceBuilder name(String dataSourceName)
dataSourceName - datasource namepublic ProxyDataSourceBuilder queryTransformer(QueryTransformer queryTransformer)
QueryTransformer.queryTransformer - a query-transformer to registerpublic ProxyDataSourceBuilder parameterTransformer(ParameterTransformer parameterTransformer)
ParameterTransformer.parameterTransformer - a query-parameter-transformer to registerpublic ProxyDataSourceBuilder multiline()
public ProxyDataSourceBuilder formatQuery(ProxyDataSourceBuilder.FormatQueryCallback formatQueryCallback)
This method is mutually exclusive to asJson().
formatQueryCallback - A callback to format the querypublic ProxyDataSourceBuilder writeIsolation()
public ProxyDataSourceBuilder jdbcProxyFactory(JdbcProxyFactory jdbcProxyFactory)
JdbcProxyFactory.jdbcProxyFactory - a JdbcProxyFactory to registerpublic ProxyDataSourceBuilder connectionIdManager(ConnectionIdManager connectionIdManager)
ConnectionIdManager.connectionIdManager - a ConnectionIdManager to registerpublic ProxyDataSourceBuilder proxyResultSet()
public ProxyDataSourceBuilder proxyResultSet(ResultSetProxyLogicFactory factory)
public ProxyDataSourceBuilder proxyGeneratedKeys()
ResultSet proxy for generated keys(e.g.: Statement#getGeneratedKeys()).public ProxyDataSourceBuilder proxyGeneratedKeys(ResultSetProxyLogicFactory factory)
ResultSet proxy for generated keys with given proxy logic factory.public ProxyDataSourceBuilder repeatableReadGeneratedKeys()
ResultSet proxy for generated keys that allows repeatable read.public ProxyDataSourceBuilder autoRetrieveGeneratedKeys(boolean autoClose)
Statement.getGeneratedKeys().
The retrieved ResultSet is available via ExecutionInfo.getGeneratedKeys().
When this configuration is combined with proxyGeneratedKeys(ResultSetProxyLogicFactory), the proxied
ResultSet will be returned from ExecutionInfo.getGeneratedKeys().
When autoClose parameter is set to true, datasource-proxy will close the generated-keys ResultSet
after it called QueryExecutionListener.afterQuery(ExecutionInfo, List).
This behavior might not be ideal if above layer, such as OR Mapper or application code, need to access generated-keys
because when they access generated-keys, the resultset is already closed.
To support such usecase, specify RepeatableReadResultSetProxyLogicFactory and set autoClose=false.
This way, even though your QueryExecutionListener has accessed generated-keys, it is still readable at
upper layer of the code, and they can close the generated-keys resultset.autoClose - set true to close the generated-keys ResultSet after query listener executionpublic ProxyDataSourceBuilder autoRetrieveGeneratedKeys(boolean autoClose, ResultSetProxyLogicFactory factory)
autoRetrieveGeneratedKeys(boolean).autoClose - set true to close the generated-keys ResultSet after query listener executionfactory - a factory to create a generated-keys proxypublic ProxyDataSourceBuilder autoRetrieveGeneratedKeysWithRepeatableReadProxy(boolean autoClose)
RepeatableReadResultSetProxyLogicFactory.
See detail on autoRetrieveGeneratedKeys(boolean).autoClose - set true to close the generated-keys ResultSet after query listener executionpublic ProxyDataSourceBuilder retrieveGeneratedKeysForBatch(boolean forStatement, boolean forPreparedOrCallable)
Statement and
PreparedStatement / CallableStatement.
Setting is only effective when generated-keys auto-retrieval is enabled.
Defult values are set false for Statement, true for PreparedStatement
and CallableStatement.forStatement - for StatementforPreparedOrCallable - for PreparedStatement and CallableStatementpublic ProxyDataSourceBuilder repeatableReadResultSet()
proxyResultSet(new RepeatableReadResultSetProxyLogicFactory())public ProxyDataSourceBuilder methodListener(MethodExecutionListener listener)
listener - a method execution listenerpublic ProxyDataSourceBuilder beforeMethod(ProxyDataSourceBuilder.SingleMethodExecution callback)
MethodExecutionListener that performs given lambda on MethodExecutionListener.beforeMethod(MethodExecutionContext).callback - a lambda function executed on MethodExecutionListener.beforeMethod(MethodExecutionContext)public ProxyDataSourceBuilder afterMethod(ProxyDataSourceBuilder.SingleMethodExecution callback)
MethodExecutionListener that performs given lambda on MethodExecutionListener.afterMethod(MethodExecutionContext).callback - a lambda function executed on MethodExecutionListener.afterMethod(MethodExecutionContext)public ProxyDataSourceBuilder traceMethods()
TracingMethodListener.public ProxyDataSourceBuilder traceMethods(TracingMethodListener.TracingMessageConsumer messageConsumer)
TracingMethodListener with consumer that receives trace logging message.messageConsumer - receives trace logging messagepublic ProxyDataSourceBuilder traceMethodsWhen(TracingMethodListener.TracingCondition condition)
TracingMethodListener.
When given condition returns true, it prints out trace log.
The condition is used for dynamically turn on/off tracing.condition - decide to turn on/off tracingpublic ProxyDataSourceBuilder traceMethodsWhen(TracingMethodListener.TracingCondition condition, TracingMethodListener.TracingMessageConsumer messageConsumer)
TracingMethodListener.
When given condition returns true, it prints out trace log.
The condition is used for dynamically turn on/off tracing.
The message consumer receives a tracing message that can be printed to console, logger, etc.condition - decide to turn on/off tracingmessageConsumer - receives trace logging messagepublic ProxyDataSource build()
Copyright © 2023. All rights reserved.