6.3 データベースへのネイティブ接続を使用するアプリケーションのためのサンプルJavaコード
次のJavaコードは、オブジェクト・リレーショナル・マッピング(ORM)フレームワークを使用するアプリケーションでTrue Cacheを使用する方法を示しています。
これは、プライマリ・データベースで実行されているデータベース・アプリケーション・サービスへの論理接続を1つのみ維持し、ドライバが基礎となる物理接続を処理できるようにするもう1つの例です。必要なパラメータを設定できるように、フレームワークから基礎となる接続を取得する方法を示します。
警告:
このコードは本番環境で使用しないでください。-
oracle.jdbc.useTrueCacheDriverConnection=true
接続プロパティをpersistence.xml
ファイル内の接続URLに追加します。 -
True Cache接続を使用する必要がある方法では、セッションをアンラップし、
doWork
メソッドを使用して基礎となるJDBC接続を取得し、その接続に必要な読取り専用パラメータを設定します。例:Session session = em.unwrap(Session.class); session.doWork(new Work() { @Override public void execute(Connection con) throws SQLException { // if it is connected to primary, I want the connection to switch to true_cache now if(!con.isReadOnly()) { // The below code demonstrates the connection is to primary now System.out.println("Query getting executed on:"); Statement statement = con.createStatement(); ResultSet rs = statement.executeQuery("SELECT database_role from v$database"); rs.next(); System.out.println("Database role : " + rs.getString(1)); rs.close(); // Now switching the connections to true cache con.setReadOnly(true); // The below code demonstrates the connection is to true cache now System.out.println("After set read only true, Query getting executed on:"); Statement statement2 = con.createStatement(); ResultSet rs2 = null; rs2 = statement2.executeQuery("SELECT database_role from v$database"); rs2.next(); System.out.println("Database role : " + rs2.getString(1)); rs2.close() } } });