przy użyciu niejawnej funkcji buforowania sterownika JDBC Oracle

Jestem pewien, że ktoś inny zadał już to pytanie, ale wciąż nie mogłem znaleźć satysfakcjonującej odpowiedzi. Oto mój scenariusz: chcę użyć ukrytego buforowania instrukcji JDBC sterownika Oracle (udokumentowanego tutaj:http://docs.oracle.com/cd/B28359_01/java.111/b31224/stmtcach.htm#i1072607)

Muszę użyć połączeń od dostawcy puli JDBC innej firmy (bardziej szczegółowo, Tomcat JDBC) i nie mam tam wyboru.

Problem polega na tym, że sposób włączenia niejawnego buforowania jest procesem dwuetapowym (zgodnie z dokumentacją):

1

Wywołaj setImplicitCachingEnabled (true) w połączeniu lub Wywołaj OracleDataSource.getConnection z właściwością ImplicitCachingEnabled ustawioną na true. Ustawiasz ImplicitCachingEnabled, wywołując OracleDataSource.setImplicitCachingEnabled (true)

2.

Oprócz wywołania jednej z tych metod należy również wywołać OracleConnection.setStatementCacheSize na fizycznym połączeniu. Podany argument jest maksymalną liczbą instrukcji w pamięci podręcznej. Argument 0 określa brak buforowania.

Mogę żyć z 1 (w jakiś sposób mogę skonfigurować moją pulę do korzystania zOracleDataSource jako podstawowa fabryka połączeń i na tej podstawie mogę ustawićOracleDataSource.setImplicitCachingEnabled(true)). Ale w drugim kroku potrzebuję już połączenia, aby zadzwonićsetStatementCacheSize.

Moje pytanie brzmi, czy istnieje możliwość określenia na poziomie źródła danych wartości domyślnej dlastatementCacheSize abym mógł uzyskać odOracleDataSource połączenia, które są już włączone dla niejawnego buforowania.

PS: niektóre powiązane pytania znalazłem tutaj:Sterownik Oracle jdbc: niejawna pamięć podręczna instrukcji lub setPoolable (prawda)?

Aktualizacja (możliwe rozwiązanie):

W końcu to zrobiłem:

Utworzono rodzimą pulę połączeń za pomocąoracle.jdbc.pool.OracleDataSource.Utworzono pulę połączeń tomcat JDBC przy użyciuorg.apache.tomcat.jdbc.pool.DataSource który używa rodzimego (patrz właściwośćdataSource).Włączone przez AOP poincut tak, że po wykonaniu 'wykonania (public java.sql.Connection oracle.jdbc.pool.OracleDataSource.getConnection ())' Podnoszę obiekt i wykonuję ustawienia, które chciałem.

Rozwiązanie działa świetnie; Jestem po prostu niezadowolony, że musiałem napisać jakiś szablon, aby to zrobić (spodziewałem się prostego własności).

questionAnswers(2)

yourAnswerToTheQuestion