Performance benchmarking has shown that our JDBC proxying (AbstractProxyHandler and subclasses) are a big hotspot.
Most of their provided functionality fall into fairly well-defined steps. Replace as much proxying as possible with new contracts.
org.hibernate.engine.jdbc.internal.proxy completely removed
JdbcResourceRegistry merged into JdbcCoordinator.
A few pieces of LogicalConnectionImplementer moved into JdbcCoordinator as well.
StatementPreparerImpl registers the Statement with JdbcCoordinator.
StatementPreparerImpl logs PreparedStatement and CallableStatement SQL
Replaced Statement#close and ResultSet#close calls with JdbcCoordinator#release
Enforced the use of StatementPreparer instead of Connection's createStatement, prepareStatement, and prepareCall
Created ResultSetExtractor and used it to replace execute/executeUpdate/executeQuery calls on Statement/PreparedStatement/CallableStatement
ResultSetExtractorImpl registers the ResultSet with JdbcCoordinator.
ResultSetExtractorImpl logs Statement SQL
org/hibernate/test/jdbc/proxies tests updated/refactored to test the new apis