2021.11.22(월)
🌿 JDBC 소개
- Java에서 데이터베이스에 접근할 수 있게 해주는 Programming API
🌱 환경 설정
- java.sql 패키지
- OJDBC 다운로드 및 Java Build Path에 External JAR 추가(=Eclipse 라이브러리로 등록)
- character set 설정: 문자가 제대로 출력되도록 Eclipse 작업 파일의 인코딩 방식/문자셋을 UTF-8로 일치시킴
🌱 JDBC 사용 객체
1. DriverManager
- 데이터 원본에 JDBC 드라이버를 통해 커넥션을 만드는 역할
- DriverManager에 DBMS Driver 등록 = Class.forName() 메서드를 통해 생성됨 → 반드시 예외(ClassNotFoundException) 처리 필요
- e.g.
Class.forName(“oracle.jdbc.driver.OracleDriver”);
Class.forName(“com.Microsoft.jdbc.sqlserver.SQLServerDriver”);
Class.forName(“org.gjt.mm.mysql.Driver”);
- e.g.
- getConnection() 메서드를 사용하여 Connection 객체 생성 = url, 계정명, 비밀번호 입력하여 Connection 객체 생성 = DB와 연결시킴
e.g.Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "JDBC", "JDBC");
2. Connection
- 특정 데이터 원본과 연결된 커넥션
- DB의 연결정보(IP주소/URL, port번호, 계정명, 비밀번호)를 담고 있는 객체
- createStatement() 메서드를 호출하여 Statement 객체 생성, 또는 prepareStatement() 메서드를 호출하여 PreparedStatement 객체 생성
- SQL문을 실행시키기 위해 우선 Connection 객체가 있어야 함
3. Statement
- 해당 DB에 SQL문을 전달하고 실행한 후 결과를 받아내는 객체 ← Statement 객체의 인자로 완성된 SQL문을 담아 전달
- 실행할 SQL문이 DML문(insert, update, delete)일 경우, stmt.executeUpdate("DML문") → 반환 자료형 = 처리된 행의 수 int
- 실행할 SQL문이 SELECT문인 경우, stmt.executeQuery("SELECT문") → 반환 자료형 = 질의 결과 데이터 모음 ResultSet
4. PreparedStatement
- 해당 DB에 SQL문을 전달하고 실행한 후 결과를 받아내는 객체 ← 각 인수에 대해 위치 홀더 '?'를 사용해 SQL문을 정의
- Statement 객체와의 차이점 = 미완성된 SQL문을 먼저 전달하여 SQL문이 미리 컴파일되고, 실행 시간동안 인수 값을 위한 공간을 확보함/실행하기 전에 완성 형태로 만든 후 실행만 하면 됨
5. ResultSet
- SELECT문을 사용한 질의 성공 시 반환되는 객체 → ResultSet에 담겨있는 데이터를 하나씩 뽑아서 VO 객체에 담음(많으면 ArrayList로 관리)
- SQL 질의에 의해 생성된 테이블을 담고 있음
- cursor로 특정 행에 대한 참조 조작
🌱 JDBC 프로그래밍 절차
🌿 MVC 패턴
🌱 Run
- 애플리케이션 실행을 위해 main() 메서드를 가지고 있는 패키지
🌱 View
- Client에게 보여주는 화면 담당
🌱 Controller
- View로부터 전달받은 데이터를 가공 처리(데이터 변환, 디코딩 등)한 뒤 DAO로 전달
- DAO로부터 전달받은 결과에 따라 View를 결정하여 인코딩 후 데이터 전송
🌱 Model
- DBMS에서 전송된/전송할 데이터를 보관할 수 있는 클래스(VO) 및 DBMS와 통신하면서 데이터를 주고 받는 클래스(DAO)가 있는 패키지
- VO(Value Object) = 데이터베이스의 각 컬럼 개체(entity) 저장용 클래스가 있는 패키지 → DB의 도메인 정보를 Client에게 전달할 때 그 도메인 단위 정보를 VO에 구현
- DAO(Database Access Object) = DBMS에 접속하여 실제 데이터를 전송하거나 결과 값을 전달받는 클래스가 있는 패키지
💻 JDBC 작업 맛보기 실습
- 실습 파일 = 01_JDBC_ProductManager 디렉토리
📗 homework: 복습
'back-end dev > JDBC' 카테고리의 다른 글
[KH정보교육원] 35일차_Properties, 조별 실습 (0) | 2021.11.30 |
---|---|
[KH정보교육원] 34일차_Template, Service 실습 마무리 (0) | 2021.11.26 |
[KH정보교육원] 33일차_PreparedStatement 실습 계속, Template, Service (1) | 2021.11.25 |
[KH정보교육원] 32일차_Statement 실습 계속, PreparedStatement (0) | 2021.11.24 |
[KH정보교육원] 31일차_JDBC MVC 및 Statement 실습 (0) | 2021.11.24 |