일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 리눅스 권한설정 리눅스 유마스크
- LG CONTORL CENTER
- LG 컨트롤 센터
- 표 가운데정렬방법
- chmod umask
- LG 컨트롤 센터 온도
- 노트북CPU견적
- 아나콘다 install
- 스테가노그래피 툴
- 티스토리표가운데
- 티스토리가운데정렬
- LG 그램 온도
- chmod 설정
- Forensically
- 그램 온도
- 그램 온도 낮추기
- Image Steganography
- 노트북CPU성능비교
- Error : Due to incompatibility with several Python libraries
- 유마스크
- 정보보안용어
- 'Destination Folder' cannot contain non-ascii characters (special characters or diacritics). Please choose another location.
- 리눅스 디스크 다 참
- umask and 연산
- zsteg
- 표 가운데정렬
- 노트북CPU성능
- linux 권한설정
- 리눅스 휴지통 비우기
- 스테가노그래피 포렌식 툴
- Today
- Total
공대생의 에러일기
JDBC와 DBCP란? 본문
JDBC와 DBCP란?
비전공자의 관점에서 아주 쉽게 말하자면 DB와 서버간의 연결(통신)? 방법입니다.
하지만 사실상 JDBC는 API고, DBCP는 연결 방법이므로 두개를 비슷하게 외우면 안되니 설명을 듣고 이해합시다..!
-
JDBC (Java DataBase Connectivity)
자바에서 SQL을 실행하기 위해 데이터베이스를 연결해주는 응용프로그램 인터페이스입니다.
데이터베이스 표준 접근 API(Application Programing Interface)
즉, 서버와 DB가 연동되있는 자바프로그램에서 SQL문을 사용한다면 JDBC를 사용할 수 있습니다.
DB는 JDBC를 사용하기 위한 드라이버를 제공하는데, JDBC는 이 드라이버를 통해 DB에 접속 할 수 있습니다.
이 글을 읽는 대부분의 사람들은 jdbc와 DBCP의 차이점을 알기 위해 왔을것 같아 말씀드리자면
JDBC만 있어도 DB접속은 됩니다.
그럼 DBCP는 뭐냐? 왜있냐?
JDBC의 떨어지는 DB 이용 효율을 높여줄 또다른 방법입니다.
무슨 효율을 어떻게 높이는지 JDBC와 비교하며 설명하겠습니다.
-
DBCP (DataBase Connection Pool)
DB 객체를 효율적으로 관리하는 일종의 '방법'입니다.
DB Connection 객체를 생성하면 Pool 이라는 공간에 저장해 두고, DB 연결 요청이 들어올 때 이 커넥션Pool에서 커넥션 객체를 가져다 쓰고 반환 합니다. 그 수가 maxldle 값을 넘어가면 객체 연결이 끊어지게 됩니다.
maxIdle – 사용한 커넥션을 풀에 반납 시 최대로 유지할 개수
- JDBC를 사용할 때 DB접속 절차
- DB 접속을 위한 JDBC 드라이버 로드
- DriverManager.getConnection() Method로 DB 커넥션 객체를 받는다.
- 받아온 커넥션 객체로부터 쿼리 수행을 위한 PreparedStatement() 객체 생성
- executeQuery()를 실행해서 결과를 받아옴
//이해를 돕기위한 임의의 코드입니다.
try {
Class.forName("com.mysql.jdbc.Driver"); //드라이버 로드
} catch(ClassNotFoundException e) {
e.printStackTrace();
}
String sql = "SELECT ... id FROM ...";
try(Connection conn = DriverManager.getConnection(id, user, pw); //객체 받기
PreparedStatement ps = conn.prepareStatement(sql)) //SQL을 사용할 수 있게 하는 PS 객체 생성
try(ResultSet rs = ps.executeQuery()){ //SQL 실행
while(rs.next()) {
String description = rs.getString(1);
int id = rs.getInt("id");
JDBC가 비효율적인 이유는
DB를 연결할때마다 매번 드라이버를 로드하고 커넥션 객체를 생성하는걸 반복하기 때문입니다.
DBCP를 사용하게 된다면 불필요한 단계를 줄이므로 속도가 향상되고, DB커넥션의 과부하를 방지할 수 있습니다.
DBCP에 대한 장점을 장황하게 설명 했지만 단점이 없는것은 아닙니다.
DBCP는 커넥션 객체가 과하게 많으면 메모리를 많이 차지하게 됩니다.
따라서 무작정 많이 늘리는 것은 오히려 성능이 떨어지는 결과를 가져옵니다.
'DB' 카테고리의 다른 글
정처기 SQL - GRANT OPTION FOR, CASCADE 동시 사용 문제 (0) | 2022.07.08 |
---|---|
정처기 SQL - 제약조건(CONSTRAINT) DOMAIN, TABLE 차이 - VALUE IN / VALUE 생략, 제약조건 생략 (0) | 2022.07.04 |