- <DTO의 특징>
Getter/Setter: 각 필드에 대한 Getter와 Setter 메서드를 제공.생성자 및 빌더 패턴: 객체를 생성할 때 보통 생성자나 빌더 패턴을 사용.
- <DTO 사용의 장점>
데이터 캡슐화: 엔티티의 데이터를 노출하지 않고 필요한 부분만 전달 가능.유연성: DTO에 필요한 필드만 선택적으로 추가 가능.
- <Class를 기반으로 한 DTO 예시>
import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @Getter @Setter @NoArgsConstructor @AllArgsConstructor public class UserDto { private String name; private String email; }
@Getter와 @Setter: 각 필드에 대해 자동으로 Getter와 Setter를 생성.@NoArgsConstructor: 기본 생성자를 자동으로 생성.@AllArgsConstructor: 모든 필드를 파라미터로 받는 생성자를 자동으로 생성.
생성 후 필드를 수정할 수 없다.
- <Record의 특징>
Immutable: 한 번 생성된 이후 상태가 변경되지 않는다.간결한 선언: 불필요한 코드(생성자, Getter 등)를 자동으로 생성해 줌.Setter 없음: 값이 한 번 설정되면 변경할 수 없습니다.
- <Record의 장점>
- 코드 간소화: 데이터 전달을 위한 객체를 더 간단하게 정의 가능.
- 불변성: 데이터 변경을 막아 안전하게 다룰 수 있음.
- <Record 예시>
public record UserDto(String name, String email) { }Record를 선언하면, 자동으로 다음과 같은 메서드가 제공된다.
생성자: public UserDto(String name, String email)Getter: name() 및 email()toString(): UserDto[name=..., email=...]hashCode(),equals()
| 특징 | Class | Record |
|---|---|---|
| 불변성 | Mutable (기본적으로 변경 가능) | Immutable (변경 불가능) |
| 코드 작성량 | 생성자, Getter, Setter 필요 | 자동으로 생성됨 |
| Java 버전 | Java 버전에 무관 | Java 14 이상 |
| 상속 | 다른 클래스를 상속하거나 상속받을 수 있음 | 상속 불가능 |
| Setter 제공 | 필드 값을 수정할 수 있는 Setter 제공 | Setter 없음 (불변 객체) |
우앙 떠영님 TIL이당!!!