Home Entity vs Object
Post
Cancel

Entity vs Object

Entity vs Object


백엔드 프로그래밍을 하면서 왜 같은 객체를 표현하는 클래스들이 이렇게나 많은지에 대한 고민이 별로 없었던 것 같다. 이번 기회를 통해 각각의 존재 이유와 역할에 대해 정리해보자.

Entity

Entity의 경우, DB와 백엔드 서버 사이의 데이터를 주고 받기 위한 역할을 수행한다. 데이터에 대한 속성만 지정 가능하기 때문에 메소드가 없는 Object라고 생각하면 편하다.

ex) 야구 선수 Entity가 있다면, 야구 선수의 키, 몸무게, 타율 등이 포함될 순 있지만, 홈런을 친다. 경기에 나간다와 같은 동작은 Entity에 정의될 수 없다.

Object (VO, DTO)

Object는 Entity에 추가 확장 기능이 정의되어 있다.

VO

FE의 입력 데이터의 유효성을 검증하고 데이터를 바인딩하는 역할을 수행한다.

(binding : FE의 입력 데이터는 기본적으로 모두 String이므로 이를 객체 변수 타입에 맞게 변환)

또한 BE의 비즈니스 로직 결과를 VO에 담아 FE로 반환하는 역할을 수행한다. 이 과정에서 비밀번호 같이 노출되어선 안되는 정보를 선별하게 된다.

DTO

VO에서 값을 받아와 DTO에서는 비즈니스 로직을 수행해 데이터를 처리한다. Entity와는 다르게 객체의 메소드를 수행할 수 있다.

역할을 나눈 이유

저장 시점에 데이터 변경이 발생하는 보안 허점이 발생하지 않도록 Entity와 Object를 구분한다.

This post is licensed under CC BY 4.0 by the author.