Java setDriverClassName(String driverClassName)

2023. 2. 20. 09:45Java

프로젝트 내 src 내 javabasic 패키지 내 DBCPTest.java

package javabasic;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.apache.commons.dbcp2.BasicDataSource;

public class DBCPTest {
	// DataSource(interface) - Apache DBCP API에 BasicDataSource
	// : Connection생성 기능(DriverManager upgrade 버전)
	// : setter 메소드를 이용해서 연결정보를 지정할 수 있다.
	// : 객체 자체에서 연결정보를 가질 수 있다.
	// : 매개 변수 필요없이 getConnection()메소드 호출 만으로
	// : Connection 생성
	// : 내부적으로 Connection Pool 제공한다. DBMS 속도 저하를 막는다

	public static void main(String[] args) throws SQLException {
		// TODO Auto-generated method stub
		// BasicDataSource 생성한다.
		BasicDataSource dataSource = new BasicDataSource();
		// JDBC 접속 설정을 dataSource 객체에 해준다.
		dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
		dataSource.setUrl("jdbc:oracle:thin:@localhost:1521:orcl"); // thin type은 타입중 네번째 타입의미

		dataSource.setUsername("scott");
		dataSource.setPassword("a1234");
//				dataSource.addConnectionProperty("scott", "a1234");

		// Connection Pool설정 : 설정을 하지않으면 default값으로 적용
		dataSource.setInitialSize(5); // 최초로 생성할 Connection 수 : default값 = 0개
		dataSource.setMaxTotal(10); // 최대로 생성할 Connection 수 : default값 - 8개 음수-무제한
		// 5개를 모두 대여했을 경우에는 사용자의 요구에의해서 Connection을 10개까지 더 만들 수
		// 있다.(하나씩 추가) 10개를 모두 소진했을 경우에는 사용자는 대기상태가 된다.

		dataSource.setMaxWaitMillis(1000); // 커넥션 반납을 기다리는 최대 시간, 커넥션 객체 반납을 기다리는 최대 시간 : 기본-무제한, 음수-무제한
		// 지정된 시간동안 커넥션이 반납되지 않으면 예외발생

		dataSource.setMaxIdle(5); // 최대로 대여가 가능한 객체수 동시에 최대 5개로 객체수정할 수 있다. 최대 대여 가능한 커넥션 객체의 수 : default값-8,
									// 음수-무제한
		dataSource.setMinIdle(5); // 최소 대여가능한 커넥션 객체의 수 : default값 - 0

		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;

		// 접속, 드라이버매니저가했듯이 파라미터 설정을 안해도 된다
		try {
			conn = dataSource.getConnection();
			stmt = conn.createStatement();
			rs = stmt.executeQuery("select * from dept");

			while (rs.next()) {
				System.out.println(rs.getInt(1) + ", " + rs.getString(2) + ", " + rs.getString(3));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if (rs != null)
				rs.close();
			if (stmt != null)
				stmt.close();

			// BasicDataSource로 connection을 반납하겠다는 뜻, 이반납되는커넥션은 Apache 에서 만든 커넥션
			// connection 이 종료가 되고 그런것은 아니다.
			if (conn != null)
				conn.close();
			if (dataSource != null)
				dataSource.close();
		}
	}

}

실행 결과

10, ACCOUNTING, NEW YORK
20, RESEARCH, DALLAS
30, SALES, CHICAGO
40, OPERATIONS, BOSTON

 

'Java' 카테고리의 다른 글

Java getBufferSize()  (0) 2023.02.20
Java executeBatch()  (0) 2023.02.20
Java getTime(int columnIndex)  (0) 2023.02.20
Java LocalDateTime  (0) 2023.02.19
Java BasicDataSource  (0) 2023.02.18