Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
Tags
- css
- 코딩문제
- Entity
- 배열
- 코딩테스트 준비
- wil
- 회고
- GIT
- 항해99
- HTML
- 자료구조
- 개발자 취업
- 우선순위 큐(priorityqueue)
- 자바
- Java
- 면접(java
- 코딩공부
- 코딩
- 이진 탐색(binary search)
- github
- cs 공부)준비
- 정렬 알고리즘(sort algorithm)
- 메서드
- Grafana
- 프로그래머스
- ArrayList
- aop
- Til
- 99클럽
- Spring
Archives
- Today
- Total
hayu's 개발 일지
[TIL]240319 Entity & DTO 본문
Entity란?
- Entity 클래스는 실제 DB 테이블과 매핑되는 클래스로 데이터 베이스의 테이블에 존재하는 컬럼들을 필드로 가지는 객체이다. (엔티티 클래스는 실제 DB의 테이블과 1:1 매핑된다.)
- Entity는 데이터 베이스 영속성의 목적으로 사용되는 객체이기 때문에 요청(Request)이나 응답(Response)을 전달하는 클래스로 사용하는 것은 좋지 않다.
- Entity에서는 Setter 메서드의 사용을 지양해야 한다. 변경되지 않는 인스턴스에 대해서도 Setter로 접근이 가능해지기 때문에 객체의 일관성, 안전성을 보장하기 힘들어진다.(Setter 대신 생성자나 Builder를 사용하는 것이 좋다.)
Dto란?
- 계층(Layer) 간 데이터 교환이 이루어질 수 있도록 하는 객체이다.(직렬화에도 사용된다.)
- Controller 같은 클라이언트와 마주하는 계층에서는 Entity 대신 DTO를 사용해서 데이터를 교환하며 그 외에도 DTO를 사용할 수 있지만 주로 View 와 Controller 사이에서 데이터를 주고 받을 때 활용성이 높다.(클라이언트와 서버 간 데이터 전송을 위해 설계된 객체이다.)
- DTO는 Getter, Setter 메서드를 포함한다.
Entity 와 DTO를 분리하는 이유
DB와 View 계층 사이의 역할 분리를 위해서 이다.
- DTO는 DB와 1:1 매핑을 하는 Entity 객체와 달리 각 계층끼리 주고 받는 전송 객체이다.
- 순수하게 데이터를 담고 있다는 점에서 Entity와 유사하지만 목적 자체가 데이터의 전달이므로 일회성으로 사용되는 성격이 강하다.
- JPA를 이용하게 되면 Entity 객체는 단순히 데이터를 담는 객체가 아니라 실제 DB와 관련이 있고 내부적으로 EntityManager(EM)가 관리하는 객체이다.
참고자료
- https://velog.io/@eunsiver/DTO-Entity%EC%9D%98-%EC%B0%A8%EC%9D%B4
'프레임워크 > spring' 카테고리의 다른 글
[TIL]240321 엔티티(Entity) 연관관계 매핑(2) (0) | 2024.03.21 |
---|---|
[TIL]240320 엔티티(Entity) 연관관계 매핑(1) (0) | 2024.03.20 |
[TIL]240316 트러블 슈팅: 아이디 값 null (0) | 2024.03.16 |
[TIL]240314 Swagger (1) | 2024.03.14 |
[TIL]240313 Builder Pattern (0) | 2024.03.13 |