diff --git a/src/main/java/com/zaxxer/hikari/proxy/CallableStatementProxy.java b/src/main/java/com/zaxxer/hikari/proxy/CallableStatementProxy.java index 9cd50236..8f73f586 100644 --- a/src/main/java/com/zaxxer/hikari/proxy/CallableStatementProxy.java +++ b/src/main/java/com/zaxxer/hikari/proxy/CallableStatementProxy.java @@ -19,6 +19,23 @@ package com.zaxxer.hikari.proxy; import java.sql.CallableStatement; /** + * This is the proxy class for java.sql.CallableStatement. It is used in two ways: + * + * 1) If instrumentation is not used, Javassist will generate a new class + * that extends this class and delegates all method calls to the 'delegate' + * member (which points to the real Connection). + * + * 2) If instrumentation IS used, Javassist will be used to inject all of + * the &HikariInject and &HikariOverride annotated fields and methods + * of this class into the actual CallableStatement implementation provided by the + * JDBC driver. In order to avoid name conflicts some of the fields and + * methods are prefixed with _ or __. + * + * Methods prefixed with __, like __executeQuery() are especially + * important because when we inject out own executeQuery() into the + * target implementation, the original method is renamed to __executeQuery() + * so that the call operates the same whether delegation or instrumentation + * is used. * * @author Brett Wooldridge */ @@ -33,6 +50,7 @@ public abstract class CallableStatementProxy extends PreparedStatementProxy impl // Overridden java.sql.CallableStatement Methods // ********************************************************************** + // *********************************************************************** // These methods contain code we do not want injected into the actual // java.sql.Connection implementation class. These methods are only