[JDBC] - 스프링 없이 JDBC와 MVC 패턴, DTO를 적용해 코드를 작성해보자

yeom yaloo·2023년 12월 14일
0

FISA

목록 보기
20/61

MVC 패턴을 기반으로 DTO를 곁들여 코드 작성

[DAO]

DAO?

  • 스프링 내에서 Repository라고 부르는 것을 스프링을 사용하지 않은 곳에선 DAO라고 부른다.
  • Data Access Object로 DB에서 데이터에 접근해서 가져오는 등의 작업을 진행하는 곳이라고 생각하면 된다.

[Controller]

DAO에서 받아온 객체가 null인 경우에도 우린 성공으로 처리한다.

  • 예외 상황이 발생하지 않은 경우에 해당 객체를 찾지 못해 null 값을 DAO에서 Controller에게 반환하더라도 이 경우엔 제대로된 요청 처리이기 때문에 Success View를 사용해서 이를 처리할 수 있게 해야한다.
  • 예외가 터진 경우라면 해당 경우는 개발자가 따로 예외 처리를 해서 사용자에게 이를 고지할 수 있게 해야한다.
  • 앞서 살펴본 포스팅에서 JDBC에서 Connection을 받아와서 데이터베이스와 연결해서 접속한 뒤 sql 작성을 위한 객체 Statement 생성 후 이를 이용해서 쿼리를 쏴서 ResultSet(select인 경우만 반환) 등의 값을 가지고 결과값을 이용해 데이터를 출력하거나 하는 등의 작업을 진행했다.

Contoller를 Singleton으로 만들어 사용하자

/* View -> Controller -> ~DAO -> DB -> ~DAO 
 * -> Controller -> SuccessView : 데이터가 없는 것은 에러가 아님
 * 				 -> failView : 예외 발생 비정상인 경우 해당 view 출력 
 * 
 * 브라우저를 통해서 요청이 유입되는 조절 클래스
 * 1. login 화면 / 가입 화면 / 검색 화면 ...
 * 2. 서로 상이한 요청을 받을 경우에 정확하게 구분이 가능한 코드로 개발을 해야 한다.
 * 
 * 개발자 관점에서의 고민
 * 1. 요청 처리 메서드는 DAO를 통해서 DB와 통신한다.
 * 2. 결과론적으로 Controller의 모든 메서드는 DAO의 모든 객체를 필요로 한다.
 * 3. 개발 방법
 * 	  방법 1 - DAO 객체를 멤버 변수로 선언한다.
 * 	  방법 2 - 메서드별로 DAO 객체를 생성한다.
 * 
 * */
public class Controller {

	private EmpDeptDAO empDeptDAO = new EmpDeptDAO();

	//
	// 브라우저에 사번 입력 후 검색 버튼 클릭시 실행되는 메서드
	/*
	 * 기능 구현시 고려 사항
	 * 
	 * 1. 사번을 받는다. 2. DAO에게 사번을 넘겨 해당 사번번호를 기준으로 검색 요청 3. 검색된 사번 정보를 받고 출력을 위임한다.
	 * 
	 * - 메서드명: reqResEmpOne - 반환타입이 없는 이유는 반환타입으로 주지 않고 바로 view를 호출해서 사용하기 떄문에
	 */

	private static Controller instance = new Controller();

	private Controller() {

	}

	public static Controller getInstance() {

		return instance;

	}
}
  • 해당 작업을 통해서 Controller를 싱글톤 객체로 만들어 다른 클래스에서 해당 객체를 생성할 수 없게 막아두었다.

[View]

  • 향후 html을 사용해 클라이언트의 요청을 받는 부분이 될 예정이다.

[Model]

1. domain

  • DAO를 통해서 받아온 데이터를 객체로 받아올 때 사용한다.
  • DAO를 통해 받아온 데이터를 DTO라고 한다. (Data Transfer Object)

[DTO]

1. DTO?

  • DTO 객체를 사용해서 데이터베이스에서 받아온 데이터를 객체화 시켜 사용한다.
profile
즐겁고 괴로운 개발😎

0개의 댓글