교재에서 사용하는 DBMS : MySQL
서블릿이 하는 주된 일은 클라이언트가 요청한 데이터를 다루는 일이다. 데이터를 가져오거나 입력, 변경, 삭제 등을 처리하려면 데이터베이스의 도움을 받아야 한다. 데이터베이스는 개발자들이 쉽게 데이터를 저장하고 꺼낼 수 있도록 도와주는 프로그램이다. 데이터베이스를 사용하려면 2가지가 필요한데, 첫 번째는 데이터베이스에 요청을 전달하고 결과를 받을 때 사용할 도구이다. 자바에서는 데이터베이스와의 통신을 위해 JDBC 기술을 제공한다. 두 번째는 데이터베이스에 명령을 내릴 때 사용할 SQL(Structured Query Language)이라는 데이터를 정의하고 조작할 때 사용하는 데이터베이스를 위한 표준 명령어다. 개발자는 SQL로 데이터베이스가 할 일을 작성하고, JDBC를 사용하여 데이터베이스로 SQL을 보내고 결과를 받는다. JDBC를 사용하여 데이터베이스와 연동하는 방법을 알아본다.
데이터베이스에 저장된 데이터를 가져와 웹 브라우저로 출력하는 서블릿인 '회원 목록 조회'를 구현해 본다. 먼저 JDBC를 사용하여 데이터베이스에 접속하는 방법과 SQL문을 통해 데이터를 다루는 방법을 살펴본다.
우선 회원 데이터를 입력하고 조회할 테이블을 생성한다. 회원 기본 정보 테이블에서 '이메일' 칼럼을 기본 키(Primary Key)로 지정하지 않은 이유는 나중에 변경할 수 있게 하기 위함이기 때문이다. 기본 키 칼럼의 값은 한 번 설정되면 변경할 수 없기 때문에 '일련번호' 칼럼을 기본 키로 사용한다. '이메일' 칼럼의 값은 중복되지 않도록 유니크(Unique)로 설정한다. '마지막암호변경일' 칼럼은 암호를 변경할 때 날짜를 저장해 두었다가 일정 시간이 지나면 다시 암호 변경을 요구하기 위한 칼럼이다.
MySQL Workbench의 Query 편집기에서 실행한 SQL문이다.
CREATE TABLE MEMBERS (
MNO INTEGER NOT NULL COMMENT '회원일련번호'
,EMAIL VARCHAR(40) NOT NULL COMMENT '이메일'
,PWD VARCHAR(100) NOT NULL COMMENT '암호'
,MNAME VARCHAR(50) NOT NULL COMMENT '이름'
,CRE_DATE DATETIME NOT NULL COMMENT '가입일'
,MOD_DATE DATETIME NOT NULL COMMENT '마지막암호변경일'
) COMMENT '회원기본정보'
;
-- 회원기본
ALTER TABLE MEMBERS
ADD CONSTRAINT PK_MEMBERS -- 회원기본 기본키
PRIMARY KEY (
MNO -- 회원일련번호
)
;
-- 회원기본 유니크 인덱스
CREATE UNIQUE INDEX UIX_MEMBERS
ON MEMBERS ( -- 회원기본
EMAIL ASC -- 이메일
)
;
ALTER TABLE MEMBERS
MODIFY COLUMN MNO INTEGER NOT NULL AUTO_INCREMENT COMMENT '회원일련번호';
INSERT INTO MEMBERS(EMAIL,PWD,MNAME,CRE_DATE,MOD_DATE)
VALUES ('s1@test.com','1111','홍길동',NOW(),NOW());
INSERT INTO MEMBERS(EMAIL,PWD,MNAME,CRE_DATE,MOD_DATE)
VALUES ('s2@test.com','1111','임꺽정',NOW(),NOW());
INSERT INTO MEMBERS(EMAIL,PWD,MNAME,CRE_DATE,MOD_DATE)
VALUES ('s3@test.com','1111','일지매',NOW(),NOW());
INSERT INTO MEMBERS(EMAIL,PWD,MNAME,CRE_DATE,MOD_DATE)
VALUES ('s4@test.com','1111','이몽룡',NOW(),NOW());
INSERT INTO MEMBERS(EMAIL,PWD,MNAME,CRE_DATE,MOD_DATE)
VALUES ('s5@test.com','1111','성춘향',NOW(),NOW());
COMMIT;
SELECT *
FROM MEMBERS;
이렇게 테이블 생성, 테이블의 기본키 정의, 유니크 칼럼 지정, 칼럼값 자동증가 설정을 한 뒤 테스트 데이터를 입력하고 조회한 결과이다(그림 2).
자바에서 데이터베이스에 접근하려면 JDBC 드라이버가 필요하다. 자바 실행 환경(JRE - Java Runtime Environment)에는 기본적으로 JDBC Type 1이 포함되어 있다. Type 1 드라이버는 ODBC 드라이버를 사용하기 때문에 개발 PC에 MySQL ODBC 드라이버를 설치해야 한다. 따라서 JRE에서 기본 제공하는 JDBC 드라이버를 쓰지 않고 MySQL에서 제공하는 JDBC Type 4 드라이버를 사용한다. JDBC Type 4 드라이버는 MySQL 통신 프로토콜에 맞추어 데이터베이스와 직접 통신하기 때문에 ODBC 드라이버가 필요 없다. 이런 이유로 실무에서도 JDBC Type 4 드라이버를 주로 사용한다.
JDBC Type 4 드라이버 다운로드 참고 링크 : https://dev.mysql.com/downloads/connector/j/?os=26
MySQL :: Download Connector/J
MySQL Connector/J 8.0 is highly recommended for use with MySQL Server 8.0, 5.7 and 5.6. Please upgrade to MySQL Connector/J 8.0.
dev.mysql.com
설치한 버전에 맞게 다운로드한다.
이렇게 다운로드한 JDBC Type 4 드라이버를 web04 프로젝트의 WEB-INF/lib 폴더에 붙여넣는다(그림 3).
참고도서 : https://freelec.co.kr/book/1674/
[열혈강의] 자바 웹 개발 워크북
[열혈강의] 자바 웹 개발 워크북
freelec.co.kr
'교재 실습 > 자바 웹 개발 워크북' 카테고리의 다른 글
24. HttpServlet으로 GET 요청 다루기 (1) | 2022.01.19 |
---|---|
23. 데이터베이스에서 데이터 가져오기 (2) (0) | 2022.01.18 |
21. JDBC와 데이터베이스 (0) | 2022.01.15 |
20. GenericServlet의 사용 (2) (0) | 2022.01.14 |
19. GenericServlet의 사용 (1) (0) | 2022.01.13 |
댓글