Oracle/OracleDataSource

OracleDataSource

Soul-Learner 2008. 8. 14. 12:34

Oracle이 제공하는 OracleDataSource를 이용하여 Connection Pool을 사용하는 예

테스트환경: Oracle 10g, ojdbc14.jar, JDK 6.0

package test;
import java.sql.*;

import javax.sql.PooledConnection;

import oracle.jdbc.pool.OracleConnectionCacheManager;
import oracle.jdbc.pool.OracleConnectionPoolDataSource;
import oracle.jdbc.pool.OracleDataSource;

public class OracleDatasourceTest {
 
 private static OracleDataSource ds;
 
 static {
  try{
     ds = new OracleDataSource();

     ds.setDriverType("thin");
     ds.setServerName("localhost");
     ds.setPortNumber(1521);
     ds.setDatabaseName("orcl"); // sid
     ds.setUser("scott");
     ds.setPassword("tiger");
     ds.setConnectionCachingEnabled(true);
     ds.setConnectionCacheName("MyCache");
       
     java.util.Properties sProperties = new java.util.Properties();
     sProperties.setProperty("MinLimit", "1");
     sProperties.setProperty("MaxLimit", "3");
     sProperties.setProperty("ValidateConnection", "true"); // Validates connection before sending to client
        
     ds.setConnectionCacheProperties(sProperties);
     OracleConnectionCacheManager occm = null;
     occm = OracleConnectionCacheManager.getConnectionCacheManagerInstance();
     occm.createCache("MyCache", ds, sProperties);
  }catch(Exception e){}
 }// end of static block
 
 public static OracleDataSource getDataSource(){
  return ds;
 }
 
 public static void main(String[] args)throws Exception {
  long start = System.currentTimeMillis();
  for(int i=0;i<50;i++){
   OracleDataSource ds = getDataSource();
   Connection conn = ds.getConnection();
   Statement stmt = conn.createStatement();
   String sql = "select empno, ename from emp where empno=7369";
   ResultSet rs = stmt.executeQuery(sql);
   int empno = 0;
   String ename = null;
   while(rs.next()){
    empno = rs.getInt("EMPNO");
    ename = rs.getString("ENAME");
   }
   rs.close();
   stmt.close();
   conn.close();
  }
  long end = System.currentTimeMillis();
  System.out.println("경과시간:"+(end-start));
 }
}