🗓️ 27일차 TIL: Java와 Oracle을 활용한 회원 정보 관리 프로그램 (JDBC)
✅ 학습 목표
- JDBC를 활용한 회원 정보 관리 시스템 구성
- DTO, DAO, Service, View 계층 나눔과 책임 이해
- Java와 Oracle을 연동해 사용자 등록/조회 기능 구현
1. 프로젝트 구조 및 설정
📁 프로젝트 패키지 구조
edu.kh.jdbc.dto: DTO (Data Transfer Object)
edu.kh.jdbc.dao: DAO (Data Access Object)
edu.kh.jdbc.service: 비즈니스 로직 처리 계층
edu.kh.jdbc.view: 사용자 UI 계층
edu.kh.jdbc.common: JDBC 공통 기능 제공
📦 필수 라이브러리
ojdbc6.jar: 오라클 DB와 Java 연동용
lombok.jar: DTO 자동 생성 도구
2. DTO - 데이터 상자 역할
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class User {
private int userNo;
private String userId;
private String userPw;
private String userName;
private String enrollDate;
}
3. DAO - 데이터베이스 작업 담당
PreparedStatement: SQL 인젝션 방지
ResultSet: 조회 결과 저장
- 주요 기능: 아이디로 조회, 사용자 전체 조회, 사용자 등록 등
public class UserDAO {
public User selectId(Connection conn, String input) { ... }
public int InsertUser(Connection conn, User user) { ... }
public List<User> selectAll(Connection conn) { ... }
}
4. Service - 비즈니스 로직 처리
- DAO를 호출해 데이터 처리
- JDBC 템플릿으로 트랜잭션 처리
public class UserService {
private UserDAO dao = new UserDAO();
public User selectId(String input) { ... }
public int insertUser(User user) { ... }
public List<User> selectAll() { ... }
}
5. View - 사용자 인터페이스
- 사용자 입력 및 출력 처리
- Scanner로 값 받고 결과 출력
- Service 계층 호출하여 기능 실행
public class UserView {
private Scanner sc = new Scanner(System.in);
private UserService service = new UserService();
public void mainMenu() { ... }
private void insertUser() { ... }
private void selectAll() { ... }
}
6. 실행 및 테스트
Run 클래스 실행 시 UserView.mainMenu() 호출 → 프로그램 시작
📘 느낀점
- 계층 구조로 나누니 프로그램의 역할 분담이 명확해짐
- DTO와 DAO의 역할을 확실히 이해함
- JDBC를 통한 실제 DB 연동 흐름에 익숙해짐
- SQL Injection 방지를 위해 PreparedStatement의 중요성 체감