본문 바로가기
Web

[WEB]JDBC

by whitedeveloper 2022. 9. 20.

## -----------------------------
## 60. JDBC : API, PATTERN
## -----------------------------

-- Java DataBase Connectivity
-- Java와 DB 연결 위한 표준 api

-- JDBC API 
>> JavaSE 표준 api 포함: rt.jar
>> java.sql.*, javax,sql.*(서블릿 backend), javax.naming.*(서블릿 backend)

>> DriverManager
>> Connection
>> Statement / PreparedStatement / CallableStatement
>> ResultSet


-- JDBC Exception Handling
>> throws, try~catch~finally
>> ClassNotFoundException: JDBC Driver 존재하지 않는 경우 발생 예외
>> SQLException: DBMS 관련된 모든 경우의 예외, 테이블존재하지않는경우, 중복, 컬럼명 틀림, 타입 틀림


-- JDBC 위한 환경 설정
>> DBMS 서버 설치: MySQL, Oracle, DB2, ..
>> JDBC Driver: DBMS 제공업체 구현 제공물(*.jar)
>> JDBC API: JavaSE 표준 api 포함(JDK 설치완료)


-- MySQL JDBC Driver Download
>> http://www.mysql.com
>> JDBC Connector/J: 8.0.28 버전
>> mysql-connector-java-8.0.28.jar

-- javac/java 사용한 클래스를 찾아가는 경로: class path 순서
1. JavaSE 표준 api: rt.jar

2. %JAVA_HOME%\jre\lib\ext> *.jar
>> C:\SSAFY\zulu8\jre\lib\ext
>> system 단위 jar 파일 추가위치: 공통라이브러리

3. set classpath=jar파일위치지정
javac -classpath jar파일위치지정
java  -classpath jar파일위치지정
(eclipse 설정 )
>> project 단위: 사용하는 프로젝트 마다 추가 설정

4. 현재폴더(working directory)


-- jdbc driver 위치: 
>> system 단위: %JAVA_HOME%\jre\lib\ext> *.jar
>> project 단위: (eclipse 설정)


-- JDBC Resource Property
private String driver = "com.mysql.cj.jdbc.Driver";
private String url = "jdbc:mysql://127.0.0.1:3306/ssafydb?serverTimezone=UTC&useUniCode=yes&characterEncoding=UTF-8";
private String user = "ssafy";
private String password = "ssafy";


-- JDBC 프로그래밍 기본 절차(순서)
1. JDBC Driver 로딩
2. DB 서버 연결 => 공장 getConnection()

3. SQL 실행 통로 개설
4. SQL 실행 요청 및 결과받기
5. SQL 실행 결과처리

6. 자원해제 => 공장 close(args);


-- SQL 수행통로
1. Statement
>> 동적 SQL 수행
>> SQL 수행 요청시마다 sql 전달 수행
>> 입력데이터: user01 => 'user01' (sql 문자열 변환 불편)

2. PreparedStatement
>> 정적 SQL 수행: sql 지정 전용통로(회원등록, 회원탈퇴, ...)
>> SQL 통로 개설시에 sql 고정 통로 생성
>> setString(int, value) => 'value' (자동으로 sql 문자열 변환 편리)

3. CallableStatement
>> Stored Procedure/Function 호출 수행
>> PL/SQL


-- JDBC Pattern Programming
1. DTO Pattern: 
>> Data Transfer Object, Encapsulation, db-table과 매핑(테이블-클래스명, 컬럼명-멤버변수명)
>> Domain Class

2. DAO Pattern
>> Data Access Object
>> DB 관련 CRUD 기능

3. Singleton Pattern
>> 단일 인스턴스 

4. Factory Pattern
>> 공장
>> DAO 클래스들이 필요한 공통 기능을 위임
>> db 연결
>> db 자원해제

'Web' 카테고리의 다른 글

[WEB]jsp경로설정  (0) 2022.09.21
[WEB]JSP,EL,JSTL  (0) 2022.09.20
[Backend-web]JSP  (0) 2022.09.15
[Backend-web]Servlet  (0) 2022.09.15
[Backend-Web]Eclipse - Dynamic Web Project 생성  (0) 2022.09.15