JDBC - DAY 2

NewTypeAsuka·2023년 3월 20일
0

JDBC@

목록 보기
3/10

오늘은 하루종일 JDBC 관련 예제를 풀어보았다.

코드 양식이 정형화되어 있는데 그것에 익숙해지는 시간이었다.

또한 XML 파일을 이용해서 DB 정보를 읽어오는 방법을 배웠다.

주요한 방법이니 루틴하게 사용할 수 있도록 익숙해지는 것이 좋겠다.

1. XML(eXtensible Markup Language)

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:
    값 전달용 객체

0개의 댓글