오늘은 하루종일 JDBC 관련 예제를 풀어보았다.
코드 양식이 정형화되어 있는데 그것에 익숙해지는 시간이었다.
또한 XML 파일을 이용해서 DB 정보를 읽어오는 방법을 배웠다.
주요한 방법이니 루틴하게 사용할 수 있도록 익숙해지는 것이 좋겠다.
XML
- 데이터를 정의하는 규칙을 제공하는 마크업 언어
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>test.xml file 입니다.</comment> <!-- 마크업 언어 주석 --> <!-- ctrl + shift + / --> <!-- entry = Map에 저장되는 K:V 한쌍을 묶어 부르는 용어 --> <entry key="name">홍길동</entry> <entry key="age">25</entry> </properties>
DB 연결 시 외부 파일을 이용하는 이유
- 1) 코드 중복 제거
- 2) 별도 관리 용이:
별도 파일을 이용하기 때문에 공통된 코드로 관리 가능- 3) 재컴파일 과정 생략:
코드가 조금만 수정되면 Java 전체가 컴파일 재실행되는데 이를 방지- 4) SQL 작성/관리에 용이:
XML 파일에 작성된 문자열은 형태 그대로를 읽어오게 됨
JDBC Template
- JDBC 관련 작업을 위한 코드를 제공하는 클래스
- DB 연결을 위한 Connection 생성 구문
- JDBC 객체 자원 반환 구문(close)
- commit, rollback 구문
- auto commit 기능 off
- 어디서든 호출 가능하도록 public static으로 작성
package edu.kh.jdbc.run; // JDBCTemplate에 존재하는 static 필드/메서드를 가져와서 사용 import static edu.kh.jdbc.common.JDBCTemplate.*; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import edu.kh.jdbc.common.JDBCTemplate; public class TestRun { public static void main(String[] args) { // JDBCTemplate 사용 예시 // 1. JDBC 객체 참조 변수 선언 Connection conn = null; Statement stmt = null; ResultSet rs = null; try { // 2. 참조 변수에 알맞은 객체 대입 conn = JDBCTemplate.getConnection(); String sql = "SELECT EMP_ID, EMP_NAME, SALARY FROM EMPLOYEE"; // SQL 작성 stmt = conn.createStatement(); // Statement 객체 생성 rs = stmt.executeQuery(sql); // ResultSet 반환 // 3. 조회 결과의 행을 반복 접근하며 출력 while(rs.next()) { String empId = rs.getString("EMP_ID"); String empName = rs.getString("EMP_NAME"); int salary = rs.getInt("SALARY"); System.out.printf("%s / %s / %d \n", empId, empName, salary); } }catch (Exception e) { e.printStackTrace(); } finally { // 4. 사용한 JDBC 객체 자원 반환 close(rs); close(stmt); close(conn); } } }
주요 클래스 용어 정리
- Model:
프로그램에 포함되어야할 데이터에 대한 정의
- 데이터 논리 구조 제어(트랜젝션 제어)
- 데이터 가공 처리(비즈니스 로직)
- DAO 수행 결과를 View/Controller로 반환
- Service:
비즈니스 로직
- 요청에 따른 필요 데이터를 반환
- 트랜잭션 제어 처리
- DAO:
DB 접근용 객체- DTO:
값 전달용 객체