Spring Boot - MVC 패턴 데이터 구조

진경천·2024년 10월 28일
post-thumbnail

  1. Client의 정보를 DTO객체에 담아 Controller에 전달
  2. Service에서 DTO의 데이터를 이용해 비즈니스 로직 실행 후 데이터를 Entity 객체로 변환하여 DAO로 전달

Entity

  • 데이터베이스 테이블 컬럼에 직접 매핑되는 객체
  • 비즈니스 로직 포함
  • DB와 직접 상호작용

DTO

  • 계층 간 데이터 교환을 위한 객체
  • Entity와 달리 DB 테이블 컬럼에서 필요한 데이터만 포함
    ➡️ 보안 및 데이터 노출 방지
  • VO(Value Object)로 불리기도 하지만 VO는 ReadOnly의 불변 객체이다.

Entity VS DTO VS VO

HTML 테이블

분류 Entity DTO VO
정의 DB 테이블 매핑 객체 데이터 전송 객체 데이터 값 표현 객체
변경 가능 여부 가변/불변 객체 가변/불변 객체 불변 객체
로직 포함 여부
포함 데이터 여부 전체 도메인 데이터 필요한 데이터만 필요한 데이터만

불변 객체는 Setter가 없어 변경이 불가하다.

Repository

  • Entity에 의해 생성된 데이터 베이스에 접근하는 메소드를 사용하기 위한 인터페이스
  • Service와 DB를 연결하는 역할 수행
  • 데이터베이스에 적용하고자 하는 CRUD를 정의하는 영역

DAO

Data Access Object

  • 데이터베이스에 접근하는 객체를 의미
  • DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담
  • Repository의 메소드를 활용하게 해주는 역할

DAO VS Repository

Repotiroy - 엔티티 객체를 보관하고 관리하는 저장소
DAO - 데이터에 접근하도록 DB접근 관련 로직을 모아둔 객체

개발할 때 둘이 같다고봐도 무방하다.

Repository
public interface MemberRepository {
	Member findById(Integer memberId);
}
DAPImpl
public class MemberRepositoryImpl implements MemberRepository {
	public Member findById(Integer memberId) {
    	String sql = "SELECT * FROM member WHERE member_id = ?";
        return jdbcTemplate.query(sql, rowMapper, memberId).stream().findAny();
}
profile
어중이떠중이

0개의 댓글