Replace JDBC proxies with a set of contracts/helpers

Description

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.

CHANGES MADE
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

Environment

None

Status

Assignee

Brett Meyer

Reporter

Brett Meyer

Fix versions

Labels

None

backPortable

None

Suitable for new contributors

None

Requires Release Note

None

Pull Request

None

backportDecision

None

Components

Priority

Major