6.3 データベースへのネイティブ接続を使用するアプリケーションのためのサンプルJavaコード

次のJavaコードは、オブジェクト・リレーショナル・マッピング(ORM)フレームワークを使用するアプリケーションでTrue Cacheを使用する方法を示しています。

これは、プライマリ・データベースで実行されているデータベース・アプリケーション・サービスへの論理接続を1つのみ維持し、ドライバが基礎となる物理接続を処理できるようにするもう1つの例です。必要なパラメータを設定できるように、フレームワークから基礎となる接続を取得する方法を示します。

警告:

このコードは本番環境で使用しないでください。
  1. oracle.jdbc.useTrueCacheDriverConnection=true接続プロパティをpersistence.xmlファイル内の接続URLに追加します。

  2. 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()
          }
       }
    });