6. 데이터베이스 연동
6.1 JDBC 실습예제
6.1.1 jsp02 프로젝트 만들기(Dynamic Web Project)
6.1.2 config.EncodingFilter.java (Filter를 이용한 한글 인코딩 설정)
Filter - 선처리 클래스(요청이 들어올 때 먼저 처리되는 클래스)
6.1.3 member.sql
DROP TABLE Member;
CREATE TABLE Member (
userid VARCHAR2(50) NOT NULL PRIMARY KEY,
passwd VARCHAR2(50) NOT NULL,
name VARCHAR2(50) NOT NULL,
email VARCHAR2(50),
hp VARCHAR2(50),
zipcode VARCHAR2(7),
address1 VARCHAR2(200),
address2 VARCHAR2(200),
join_date DATE DEFAULT SYSDATE
);
INSERT INTO Member (userid, passwd, name) VALUES ('lee', '1234', '이도훈');
INSERT INTO Member (userid, passwd, name) VALUES ('kim', '1234', '김원준');
COMMIT;
6.1.4 driverTest.jsp
6.1.5 member.jsp (데이터베이스 연동 예제 - 회원 관리)
6.1.6 member.MemberDTO.java
6.1.7 member.MemberDAO.java
6.1.8 member.MemberController.java
6.1.9 /ch06/member_list.jsp
6.1.10 /ch06/member_view.jsp
6.2 transaction 처리
6.2.1 정의 : 분리되어서는 안되는 논리적인 작업 단위
DML(Data Manipulation Language / insert, update, delete / 레코드의 내용 변경) 문이 실행되어 DB에 저장되거나(commit) 되돌리기(rollback) 위해서 실행해야 하는 SQL문
6.2.2 TCL(transaction control language : 트랜젝션 제어어) 종류
6.2.2.1 commit : SQL 문의 결과를 영구적으로 DB에 반영하는 SQL문
6.2.2.2 rollback : SQL 문의 결과를 이전 transaction의 끝부분까지 취소하는 SQL문
6.2.2.3 savepoint : transaction의 한 지점을 표시하는 임시 저장점
6.2.3 JDBC에서는 기본적으로 auto commit으로 설정되어 있으며 대량의 DML 관련 작업 수행시 수동 commit으로 바꾸고 트랜젝션 처리를 하는 것이 성능 향상에 유리함
6.3 transaction 처리 실습예제
6.3.1 트랜젝션 처리.sql
DROP TABLE emp2;
-- 테이블 복사(레코드는 복사되지 않음)
CREATE TABLE emp2 AS SELECT * FROM emp WHERE 1 = 0;
ALTER TABLE emp2 MODIFY empno NUMBER(10);
ALTER TABLE emp2 MODIFY ename VARCHAR2(20);
ALTER TABLE emp2 MODIFY deptno NUMBER(10);
-- 트랜잭션 처리 완료 후 확인
SELECT COUNT (*) FROM emp2;
DELETE FROM emp2;
COMMIT;
6.3.2 emp.dao.EmpDAO.java
6.3.3 /ch06/transaction.jsp
6.4 데이터베이스 암호화
```평문 => 암호문 (암호화)
암호문 => 평문 (복호화)
6.4.1 암호화의 중요성
- 개인정보보호법에 의거하여 회원의 중요한 정보들(고유식별번호, 비밀번호, 바이오정보 등)은 반드시 암호화하여 처리해야 함
- 개인정보보호법에 의하여 비밀번호는 일방향 암호화를 해야 함(복호화 금지)
6.4.2 대칭키 알고리즘
- 암호화와 복호화에 같은 키를 사용하여 데이터를 암호화하고 복호화함
- 다양한 암호화 알고리즘 중에서 대칭키 알고리즘인 DES_CBC_PKCS5 알고리즘을 활용하여 암호화 실습
6.5 데이터베이스 암호화 실습예제
6.5.1 /ch06/join.jsp (암호화 적용 안된 코드)
6.5.3 DB 암호화 sql (암호화 함수 이름을 짧게 작성해서 테스트할 것)
6.5.4 /ch06/join_oracle.jsp 40;51
6.5.6 /ch06/login_result.jsp
6.5.7 SHA256.java
6.5.8 Bcrypt.java
6.5.9 /ch06/join_sha.jsp
6.5.10 /ch06/login_sha.jsp
6.5.11 /ch06/join_bcrypt.jsp
6.5.12 /ch06/login_bcrypt.jsp