TIL26.

Sol Karsian·2025년 3월 18일

✅ 학습 목표

  • JDBC로 Oracle DB과 연동하여 데이터 조회, 생성, 수정하기
  • PreparedStatement를 활용한 SQL 처리 및 트래넴션 제어
  • DTO, DAO, Service 구조의 개념과 실습

1. 사용자 이름 수정 (TB_USER 테이블)

  • PreparedStatement 사용으로 SQL Injection 방지
  • ID, PW 일치 시 이름 변경
  • 트래넴션 처리:
    • 일치하면 commit()
    • 실패 시 rollback()

📌 SQL 예시

UPDATE TB_USER SET
USER_NAME = ?
WHERE USER_ID = ?
AND USER_PW = ?

📌 해석 키워드: setAutoCommit(false), commit(), rollback()


2. 조건부 데이터 조회 (EMPLOYEE 테이블)

  • 입력 값:
    • 성별 (M/F)
    • \ae08염 범위 (min~max)
    • 정렬 순서 (ASC/DESC)
  • SQL 함수 활용:
    • DECODE, BETWEEN, ORDER BY, NVL
  • PreparedStatement로 바인딩

📌 SQL 예시

SELECT EMP_ID, EMP_NAME,
DECODE(SUBSTR(EMP_NO, 8, 1), '1', 'M', '2', 'F') GENDER,
SALARY, JOB_NAME, NVL(DEPT_TITLE, '없음') DEPT_TITLE
FROM EMPLOYEE
JOIN JOB USING(JOB_CODE)
LEFT JOIN DEPARTMENT ON(DEPT_CODE = DEPT_ID)
WHERE DECODE(SUBSTR(EMP_NO, 8, 1), '1', 'M', '2', 'F') = ?
AND SALARY BETWEEN ? AND ?
ORDER BY SALARY ASC|DESC

📌 결과 출력

사번 | 이름   | 성별 | 금염    | 직급명 | 부서명
-----------------------------------------------

3. 사용자 정보 조회 + DTO 활용

  • 계층 구조 설계:
    • Service: 비즈니스 로직 처리
    • DAO: DB 접근
    • DTO: 데이터를 다니는 객체
  • JDBC 템플릿 사용 (JDBCTemplate.getConnection())
  • DAO에서 ID 조건으로 사용자 조회

📌 SQL 예시

SELECT * FROM TB_USER WHERE USER_ID = ?

📘 느낀점

  • JDBC로 DB 제어하는 통합을 실습하며 감 잡음
  • 계층 구조를 적용하며 유지복수성의 중요성 이해
  • 트래넴션 처리와 SQL Injection 방지의 필요성 심각
  • PreparedStatement의 편리함과 안정성 👍

profile
개발자 희망자 입니다.

0개의 댓글