использование функции неявного кэширования драйвера JDBC Oracle

Я почти уверен, что кто-то другой уже задавал этот вопрос, но я все еще не смог найти удовлетворительного ответа на него.   Итак, вот мой сценарий: я хочу использовать неявное кэширование операторов в драйвере JDBC Oracle (задокументировано здесь:http://docs.oracle.com/cd/B28359_01/java.111/b31224/stmtcach.htm#i1072607)

Мне нужно использовать соединения от стороннего провайдера JDBC-пула (точнее, Tomcat JDBC), и у меня там нет выбора.

Проблема в том, что способ включения неявного кэширования - это двухэтапный процесс (согласно документации):

1.

Call setImplicitCachingEnabled(true) on the connection or Call OracleDataSource.getConnection with the ImplicitCachingEnabled property set to true. You set ImplicitCachingEnabled by calling OracleDataSource.setImplicitCachingEnabled(true)

2.

In addition to calling one of these methods, you also need to call OracleConnection.setStatementCacheSize on the physical connection. The argument you supply is the maximum number of statements in the cache. An argument of 0 specifies no caching.

Я могу жить с 1 (каким-то образом я могу настроить свой пул для использованияOracleDataSource в качестве основного подключения фабрики и на этом я могу установитьOracleDataSource.setImplicitCachingEnabled(true)). But at the second step, I already need the connection to be present in order to call the setStatementCacheSize.

У меня вопрос, есть ли возможность указать на уровне источника данных значение по умолчанию дляstatementCacheSize так что я могу получить отOracleDataSource соединения, которые уже включены для неявного кэширования.

PS: некоторые связанные вопросы я нашел здесь: Драйвер Oracle jdbc: неявный кэш операторов или setPoolable (true)?

Update (possible solution):

В конце концов я сделал это:

Created a native connection pool using oracle.jdbc.pool.OracleDataSource. Created a tomcat JDBC connection pool using org.apache.tomcat.jdbc.pool.DataSource that uses the native one (see the property dataSource). Enabled via AOP a poincut so that after the execution of 'execution(public java.sql.Connection oracle.jdbc.pool.OracleDataSource.getConnection())' I pickup the object and perform the setting I wanted.

Решение отлично работает; Я просто недоволен, что мне пришлось написать какой-то шаблон, чтобы сделать это (я ожидал простой собственности).

Ответы на вопрос(2)

Ваш ответ на вопрос