부트캠프
[멋쟁이사자] 백엔드 - 31일차 회고록
planting grass
2025. 4. 15. 18:05
728x90
31일차
학습 목표
- MySQL emp 및 dept 테이블 데이터베이스 연동 및 기본 CRUD (Create, Read, Update, Delete) 작업을 수행할 수 있다.
- 두 개 이상의 테이블(emp, dept)을 조인하여 필요한 정보를 효과적으로 조회하고, 그 결과를 DTO (EmpDeptDTO.java) 객체에 매핑하여 활용할 수 있다.
- 자바에서 스레드를 생성하는 두 가지 주요 방법(Thread 클래스 상속, Runnable 인터페이스 구현)을 이해하고, 각 방법의 특징과 사용 방법을 설명할 수 있다.
개발한 기능 요약
- JDBC 연결 및 쿼리 실행
- PreparedStatement 활용한 SQL Injection 방어
- ResultSetMetaData, ParameterMetaData 사용
- MVC 구조 도입 (Model, View, Controller)
- DAO + Service 계층 분리
- 트랜잭션 수동 제어 및 롤백 처리
디렉토리 구조
MySQLApp
├── lib
│ └── mysql-connector-j-9.1.0.jar
└── src
└── com
└── mysqlapp
├── Main.java
├── controller -----------[6]
│ ├── DeptController.java
│ └── EmpController.java
├── dao -----------[4]
│ ├── DeptDAO.java (I)
│ ├── DeptDAOImpl.java (C)
│ ├── EmpDAO.java (I)
│ └── EmpDAOImpl.java (C)
├── model -----------[3]
│ ├── Dept.java
│ ├── Emp.java
│ └── EmpDeptDTO.java
├── service -----------[5]
│ ├── DeptService.java (I)
│ ├── DeptServiceImpl.java (C)
│ ├── EmpService.java (I)
│ └── EmpServiceImpl.java (C)
├── view -----------[7]
│ ├── DeptView.java
│ └── EmpView.java
└── common
└── JDBCTemplate.java -----------[2]
└── db.properties -- [1]
(I)
: Interface(C)
: Class 구현체
주요 클래스 설명
Main
- 애플리케이션의 진입점
EmpDeptController
의run()
메서드를 호출하여 전체 로직 시작
Controller
- 메뉴 선택 및 사용자 흐름 제어
EmpService
,DeptService
를 호출하여 View와 Model을 연결
Service
- DAO 호출을 담당하며 비즈니스 로직 분기 가능성 확보
- 부서 추가/조회/삭제/수정 기능 제공
- DAO의 결과를 그대로 전달
DAO
emp
,dept
테이블 대상 CRUD 수행join
,between
조건 포함한 SELECT 처리
Model
- 사원, 부서, 정보를 표현하는 DTO
- 사원의 급여와 등급을 나타내는 조인 DTO
View
- 사원 출력 관련 로직 담당
Connon
- JDBC 연결 및 트랜잭션 유틸 클래스
학습 회고
이전에 만들었던 JDBC를 이용한 MVC 패턴을 통해 CRUD한 코드와 유사한 기능을 구현했다.
둘 다 MVC 패턴에 맞게 계층을 분리했고, JDBC를 사용해 트랙잭션을 활용해서 DB를 제어했다.
다만, 이번에 MySQLApp의 경우에는 두 개의 도메인과, JOIN을 사용했고, DTO를 응용해봤다.
이전에 한 Person이 MVC 패턴 구조의 기초 학습이었다면, MySQLApp은 다중 도메인, 조인 처리, 트랜잭션 활용과 같은 좀 더 확장된 프로젝트라고 생각이 든다.
Person에서는 try-catch를 통해 JDBC를 연결하고 finally 처리를 해줬다면, MySQLApp에서는 try-catch-resource를 통해 finally을 통해 DB를 close하지 않더라도 연결을 자동으로 끊어지도록 했다.
Java Code 확인하기
https://github.com/lold2424/bootCamp/tree/main/Java%20Code/MySQLApp
[bootCamp/Java Code/MySQLApp at main · lold2424/bootCamp
멋쟁이사자. Contribute to lold2424/bootCamp development by creating an account on GitHub.
github.com](https://github.com/lold2424/bootCamp/tree/main/Java%20Code/MySQLApp)
728x90