VO와 BO, DAO, DTO, Entity들의 차이점 및 특징

Kddongkyu·2023년 10월 22일
0

SpringBoot

목록 보기
2/2
post-thumbnail

DAO(Data Access Object)

  • Data Access Object (DAO) 는 데이터베이스에 접근하는 로직과 비즈니스 로직을 분리하기 위한 객체입니다.

  • DAO는 데이터베이스에 접근하여 데이터를 조회하거나 조작하는 기능을 제공합니다.

  • 일반적으로 CRUD(Create, Read, Update, Delete) 작업을 수행합니다.


DTO (Data Transfer Object)

  • Data Transfer Object (DTO) 는 데이터 전송을 목적으로 설계된 객체입니다.

  • 주로 네트워크를 통해 데이터를 전송하는 데 사용되며, 여러 데이터 항목을 하나의 객체로 그룹화합니다.

  • 일반적으로 계층간 데이터 전송(예: 프레젠테이션 계층과 비즈니스 계층 사이)에 사용됩니다.


VO (Value Object)

  • Value Object (VO) 는 데이터를 표현하기 위한 객체입니다.

  • VO는 비즈니스 로직을 포함하지 않으며, 단순히 데이터를 전달하는 역할을 합니다.

  • VO는 일반적으로 불변 객체로 설계되어, 생성 시점의 상태를 변경할 수 없습니다.


BO (Business Object)

  • Business Object (BO) 는 비즈니스 로직을 포함하는 객체입니다.

  • BO는 비즈니스 규칙과 계산 로직을 구현하며, 일반적으로 데이터 가공 및 변환 작업을 수행합니다.

  • BO는 일반적으로 여러 DAO를 사용하여 데이터를 처리합니다.


Entity

  • Entity 는 일반적으로 데이터베이스의 테이블과 1:1로 매핑되는 객체를 의미합니다.

  • ORM(Object-Relational Mapping) 프레임워크에서는 Entity를 사용하여 데이터베이스와 객체 지향 코드를 매핑합니다.

  • Entity는 데이터베이스 테이블의 로우를 표현하며, 고유 식별자(ID)를 가지고 있습니다.


📍차이점 및 연관 관계

  • VO(Value Object)와 DTO(Data Transfer Object)는 데이터를 표현하며, VO는 불변성을, DTO는 가변성을 가집니다.
  • DAO(Data Access Object)는 데이터베이스 접근 로직을 캡슐화합니다.
  • BO(Business Object)는 비즈니스 로직을 캡슐화합니다.
  • Entity는 데이터베이스의 테이블과 직접적으로 매핑되는 객체입니다.
  • Service 계층은 비즈니스 로직을 수행할 수 있지만, 이는 선택적이며 BO의 로직을 대신할 수 있습니다.

일반적인 웹 애플리케이션의 흐름
1. Controller에서 DTO를 통해 데이터를 받습니다.
2. BO 또는 Service 계층에서 비즈니스 로직을 처리합니다.

  • BO를 사용하는 경우: BO에서 비즈니스 로직을 처리하고, 필요한 경우 DAO를 통해 데이터베이스와 상호 작용합니다.
  • Service 계층을 사용하는 경우: Service 계층에서 비즈니스 로직과 데이터베이스 접근 로직(DAO를 통한)을 함께 처리할 수 있습니다.
  1. DAO를 통해 데이터베이스에 접근하며, 이때 Entity를 사용할 수 있습니다. (BO가 아닌 Service 계층에서 DAO를 호출하는 경우에 해당합니다.)
  2. 결과 데이터를 DTO 또는 VO를 통해 다시 Controller로 전달합니다.
profile
Step by step

0개의 댓글