読者です 読者をやめる 読者になる 読者になる

かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

Hibernate(やSpring?)がProxy化してるJDBCのConnectionからoracle.jdbc.Connectionを取得する方法

ちょっと古傷を触ってしまってJavaってました。

HibernateなどからConnectionを取得した時に生のJDBCのコネクションをそのまま返すのではなく、Proxy化されてOracle固有の処理をしたくて困ったことがありましたとさ。解決策としてはgetMetaDataでMedaDataを取得したあと、そこのgetConnectionでConnectionを取り直すという回り道でProxyを迂回するという方法が使えるみたいです。

参考情報

stackoverflow.com

コードとしては以下のような感じ。

Connection conn = ...Hibernateとかからコネクションとる...;
Connection nativeConnection = conn.getMetaData().getConnection();
// あとはJDBCドライバ固有の処理をお好きなように
...