데이터베이스 연결 풀 C3p0 및 Druid

4296 단어 Javaee개발하다

데이터베이스 연결 풀

1.    ,  connection  ,  ,  ,  。

DataSource 인터페이스

1. java.sql
2. getConnection();--  
3.  :  C3PO , Druid  
4.  connnection , close() , \

## C3P0 ##


## c3p0 사용 ##
  • jar 패키지 가져오기
  • 정의 프로필 이름은 c3p0.properties 또는 c3p0-config.xml `

  •  com.mysql.cj.jdbc.Driver jdbc:mysql://localhost:3306/db3?serverTimezone=UTC root root
    
    5
    10
    3000
         
    
          
    
    com.mysql.cj.jdbc.Driver
    jdbc:mysql://localhost:3306/db3?serverTimezone=UTC
    root
    root
    
    
    5
    8
    1000
     
    `
    
  • 연결 풀 개체 만들기 - ComboPooled DataSource
  • 연결 얻기 = = getConnecction();
  •  
  • 1. public class C3p0demo {
    public static void main(String[] args) throws SQLException {
        // 
        DataSource ds = new ComboPooledDataSource();
        Connection conn = ds.getConnection();
        conn.close();
        System.out.println(conn);
        // 
        ComboPooledDataSource otherc3p0 = new ComboPooledDataSource("otherc3p0");
        Connection conn2 = otherc3p0.getConnection();
        System.out.println(conn2);
        conn2.close();
    
    
    }
    

    `

    Druid를 사용하여 풀 연결

  • jar 패키지 가져오기
  • 정의 프로필, 임의의 위치에 놓을 수 있음
  •      driverClassName=com.mysql.cj.jdbc.Driver
        url=jdbc:mysql://localhost:3306/db3?serverTimezone=UTC
        username=root
        password=root
        initialSize=5
        maxActive=10
        maxWait=3000
    
  • 데이터베이스 연결 대상 획득, 공장 클래스를 통해 연결 대상connection 대상Druid
  • 획득
    `public class demo { private static Connection conn = null; private static PreparedStatement preparedStatement = null; private static ResultSet resultSet = null;
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        try {
            // Connecttion
            conn = JDBCUtils.getConnection();
            String sql = "select * from account";
            preparedStatement = conn.prepareStatement(sql);
            resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                //System.out.println(resultSet.getString(1));
                list.add(new Person(resultSet.getInt(1), resultSet.getString(2), resultSet.getInt(3)));
            }
            JDBCUtils.close(resultSet, preparedStatement, conn);
            list.stream().forEach(name -> System.out.println(name));
        } catch (SQLException e) {
            e.printStackTrace();
        }
    
    }
        }
    

    `

    DruidJDBCutils 정의

    `public class JDBCUtils {
    private static DataSource ds = null;
    
    // 
    static {
        Properties pro = new Properties();
        InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
        try {
            pro.load(is);
            ds = DruidDataSourceFactory.createDataSource(pro);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    // Connection 
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }
    //  
    public static void close(ResultSet resultSet, Statement stat, Connection conn) {
        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (stat != null) {
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
    public static void close(Statement stat, Connection conn) {
        close(null, stat, conn);
    }
    //  DataSource
    public static DataSource getDataSource() {
        return ds == null ? ds : ds;
    }
    

    } `

    좋은 웹페이지 즐겨찾기