궁금 & 계속 까먹음..
DTO와 Entity는?
DTO는 Data Transfer Object의 줄임말로, 계층 간 데이터 전달을 위해 사용되는 객체이다. 주로 서비스 레이어와 컨트롤러 레이어 간의 데이터 전송에 사용된다.
Controller 같이 클라이언트 단과 직접 마주하는 계층에서는 Entity 대신 DTO를 사용해서 데이터를 교환하며, Controller 외에도 여러 레이어 사이에서 DTO를 사용할 수 있지만 주로 View와 Controller 사이에서 데이터를 주고받을 때 활용성이 높다.
- 데이터 전송
- 단순화: 필요한 데이터만 포함하여 전송할 수 있다. 복잡한 매핑이나 영속성을 가지지 않는다.
- 유효성 검사: DTO 클래스에서 데이터 유효성을 검사할 수 있다.
- 어노테이션 사용: @NotNull @Size @Email 등의 유효성 검사 어노테이션을 사용할 수 있다.
Entity는 실제 데이터베이스(DB)와 직접 매핑되는 클래스로, 데이터베이스의 테이블에 존재하는 컬럼들을 필드로 가지는 객체이다. 데이터베이스 테이블과 1:!로 매핑되며, 테이블이 가지지 않는 컬럼을 필드로 가져서는 안된다.
Entity는 데이터베이스 영속성의 목적으로 사용되는 객체이며, 때문에 요청(Request)이나 응답(Response) 값을 전달하는 클래스로 사용하는 것은 좋지 않다.
Entity에서는 setter 메서드의 사용을 지양해야 한다. 이유는 변경되지 않는 인스턴스에 대해서도 seter로 접근이 가능해지기 떄문에 객체의 일관성, 안전성을 보장하기 힘들어진다.
만약 setter 메서드가 아닌 Constructor(생성자)를 이용해서 초기화 하는 경우 불변 객체로 활용할 수 있고, 불변 객체로 만들면 데이터를 전달하는 과정에서 데이터가 변조되지 않음을 보장할 수 있다.
- 데이터베이스 매핑: Entity 클래스는 데이터베이스 테이블과 매핑된다.
- 영속성: Entity는 데이터베이스의 레코드를 나타내며, 영속성 컨텍스트에 의해 관리된다.
- 데이터베이스 작업: CRUD 작업을 수앵할 때 사용된다.
- 어노테이션 사용: @Entity @Table @Id @Column 등의 어노테이션을 사용해 매핑 정보를 정의한다.
DTO와 Entity의 차이점
DTO는 Entity 객체와 달리 각 계층끼지 주고받는 우편물이나 상자의 개념이다. 순수하게 데이터를 담고 있다는 점에서 Entity 객체와 유사하지만 목적 자체가 전달이므로 읽고 쓰는 것이 모두 가능하고 일회성으로 사용되는 성격이 강하다.
JPA를 이용하게 되면 Entity 객체는 단순히 데이터를 담는 객체가 아니라 실제 데이터베이스와 관련된 중요한 역할을 하며, 내부적으로 EM(EntityManager)에 의해 관리되는 객체라는 것을 알 수 있다.
역할 분리를 위한 Entity, DTO 개념과 차이점
'Entity, DTO 개념과 차이점 (+ VO)' - Entity Entity 클래스는 실제 DB 테이블과 매핑되는 핵심 클래스로, 데이터베이스의 테이블에 존재하는 컬럼들을 필드로 가지는 객체입니다. (DB의 테이블과 1:1로 매
wildeveloperetrain.tistory.com
HttpServletResponse란?
HttpServletResponse는 Java 서블릿 API의 일부로, HTTP 요청에 대한 응답을 생성하고 클라이언트에 전송하는 데 사용된다. HttpServletResponse 인터페이스는 서블릿이 클라이언트로 응답을 작성할 수 있는 다양한 메서드를 제공한다. 이 인터페이스는 클라이언트로 전송될 HTTP 응답의 상태 코드, 헤더, 콘텐츠 유형 등을 설정할 수 있게 한다.
1. 상태 코드 설정
HTTP 응답의 상태 코드를 설정할 수 있다.. 요청이 성공적으로 처리되었음을 나타내기 위해 200 OK 상태 코드를 설정하거나, 요청된 리소스를 찾을 수 없음을 나타내기 위해 404 Not Found 상태 코드를 설정할 수 있다
response.setStatus(HttpServletResponse.SC_OK);
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
2. 헤더 설정
응답 헤더를 설정하여 클라이언트에게 추가 정보를 전달할 수 있다.
response.setHeader("Content-Type", "text/html");
3. 쿠키 추가
클라이언트에 쿠키를 전송할 수 있다.
Cookie cookie = new Cookie("username", "john_doe");
cookie.setMaxAge(60 * 60 * 24); // 1 day
response.addCookie(cookie);
참고: https://wildeveloperetrain.tistory.com/101
역할 분리를 위한 Entity, DTO 개념과 차이점
'Entity, DTO 개념과 차이점 (+ VO)' - Entity Entity 클래스는 실제 DB 테이블과 매핑되는 핵심 클래스로, 데이터베이스의 테이블에 존재하는 컬럼들을 필드로 가지는 객체입니다. (DB의 테이블과 1:1로 매
wildeveloperetrain.tistory.com