728x90
반응형
1. 커넥션
:애플리케이션과 데이터베이스의 연결, 애플리케이션에서 데이터베이스에 접속하고 접속을 종료하는 일련의 과정
2. 트랜잭션
: 여러 작업을 하나의 단위로 처리하는 것
3. 데이터베이스 커넥션 풀
: 미리 일정한 수의 커넥션을 만들어 놓고 필요한 시점에 애플리케이션에 제공하는 서비스 및 관리 체계
(1) WAS가 시작될 때 일정 수의 커넥션을 미리 생성
(2) 웹 애플리케이션 요청에 따라 생성된 커넥션 객체를 전달 [JNDI 이용]
(3) 일정 수 이상의 커넥션이 사용되면 새로운 커넥션 생성
(4) 사용하지 않는 커넥션은 종료하고 최소한의 기본 커넥션을 유지
- 커넥션 풀 구현 유형
- 직접 구현
- 아파치 자카르타 DBCP API를 이용한 구현
- 애플리케이션 서버 제공
- 프레임워크 제공
- DBCP API를 이용한 커넥션 풀 구현
- DBCP API 설치
- 톰캣 7.0부터 DBCP 내장
- 톰캣에 DataSoure 설정
- server.xml 이나 context.xml에서 설정
- DB연결을 위한 정보와 커넥션풀 운영 관련 정보로 구성
- DBCP API 설치
context.xml 파일 수정 [따옴표 바꿀것]
<Resource name=“jdbc/mysql” auth=“Container”
type="javax.sql.DataSource"
driverClassName=“com.mysql.jdbc.Driver”
url=“jdbc:mysql://127.0.0.1/jspdb”
username=“jspbook” password=“1234”
maxActive=“5” maxIdle=“3” maxWait=“-1” />
<Resource> 태그 속성
username | 계정 이름 |
password | 계정 비밀번호 |
driverClassName | JDBC 드라이버 클래스 이름 |
url | 접속에 필요한 정보 |
maxActive | 데이터베이스 최대 연결 개수 |
maxIdle | 데이터베이스 최대 유휴 연결 개수 |
web.xml 설정 [자바 프로그램에서 네이밍서비스로 커넥션 풀에 접근할 수 있도록 JNDI 이름을 설정]
<resource-ref>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-auth>Container</res-auth>
</resource-ref>
4. 트랜잭션 처리
: 트랜잭션은 애플리케이션 서버 차원에서 관리가 이루어진다. [Java EE]
5. commit과 rollback
: 데이터베이스에서 트랜잭션 지원을 위해 제공하는 기능
- commit
- 데이터베이스에 트랜잭션이 완료되었음을 알리는 명령
- commit이 완료되어야만 다른 커넥션에서도 변경된 데이터를 확인할 수 있다.
- rollback
- 트랜잭션을 취소하는 명령, 현재 연결에서 수행한 결과를 원래대로 되돌리는 역할
- rollback을 이용해 모든 작업을 원래 상태로 되돌릴 수 있다.
6. JDBC에서 트랜잭션 처리
: auto commit 모드를 해제한 다음 프로그램에서 commit과 rollback 시기를 정해 처리
- auto commit 해제
- conn.setAutoCommit(false);
- JSP에서 commit과 rollback
- 클래스의 메서드로 제공
- conn.commit();
conn.rollback();
- 일괄 갱신
- Statement에서 일괄 갱신
- conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
stmt.addBatch("insert into table1 values(1,'test')");
stmt.addBatch("update table2 set memo='test' ");
int[] cnt = stmt.executeBatch();
- conn.setAutoCommit(false);
- PreparedStatement에서 일괄 갱신
- PreparedStatement pstmt = conn.prepareStatement("update table1 set memo=? where num=?");
pstmt.setString(1,"테스트1");
pstmt.setString(2,"1");
pstmt.addBatch();
pstmt.setString(1,"테스트2");
pstmt.setString(2,"2");
pstmt.addBatch();
int[] cnt = pstmt.executeBatch();
- PreparedStatement pstmt = conn.prepareStatement("update table1 set memo=? where num=?");
- Statement에서 일괄 갱신
728x90
반응형
'Application > JSP Server' 카테고리의 다른 글
[JSP 프로젝트] 주소록 프로그램 (1) - 주소록 프로그램 분석 (0) | 2021.04.28 |
---|---|
[JSP 실습] 8. 고객 등록 관리 프로그램 (0) | 2021.04.28 |
[JSP 실습] 7-2. 판매 제품 등록 화면 구현하기 (0) | 2021.04.15 |
[JSP] 에러잡기. Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*' at line 1 (0) | 2021.04.15 |
[JSP 실습] 7-1. 이벤트 등록 화면 구현하기 (0) | 2021.04.15 |