728x90
반응형
Record란?
Java Record는 Java 14부터 도입된 특별한 종류의 클래스로, 데이터를 저장하기 위한 간단한 방법을 제공한다. Spring Boot 프레임워크에서는 이러한 Record를 활용하여 간편하게 데이터 모델을 정의하고 사용한다.
Record는 왜 쓰는 건가요?
1. 간결한 코드 작성
Record를 사용하면 필드를 선언하면서 자동으로 생성되는 메서드들을 통해 코드를 간결하게 작성할 수 있다.
public record Person(String firstName, String lastName) {
}
Person person = new Person("John", "Doe");
2. 자동으로 생성되는 메서드
Record는 생성자, getter 메서드, equals, hashCode, toString 메서드를 자동으로 생성한다. 기본적인 메서드를 일일이 작성하지 않아도 된다.
public record Person(String firstName, String lastName) {
}
Person person1 = new Person("John", "Doe");
Person person2 = new Person("John", "Doe");
System.out.println(person1.equals(person2)); // TRUE
3. 불변성 보장
Record는 불변성을 가지므로 생성된 객체는 변경이 불가능하기 때문에 데이터의 안정성을 보장하고 부작용을 줄이는 데 도움이 된다.
public record Person(String firstName, String lastName) {
}
Person person = new Person("John", "Doe");
// 컴파일 오류, 불변성을 위반
// person.setFirstName("Jane");
4. Spring Data
Record를 사용한 데이터 객체를 쉽게 처리할 수 있도록 지원하고 레파지토리 인터페이스를 통해 데이터베이스 연동을 지원한다.
@Document
public record Person(@Id String id, String firstName, String lastName) {
}
public interface PersonRepository extends MongoRepository<Person, String> {
}
5. DTO & VO
데이터 전송 객체(DTO)나 값 객체(VO)를 표현하는 데에 적합하다. 이러한 객체들은 주로 데이터 전달이나 특정 도메인 값을 표현하기 위한 목적으로 사용되며, Record를 통해 이를 간단하게 정의할 수 있다.
public record Address(String city, String street, String zipCode) {
}
public record Person(String firstName, String lastName, Address address) {
}
Address address = new Address("New York", "123 Main St", "10001");
Person person = new Person("John", "Doe", address);
6. 가독성 향상
Record를 사용하면 필요한 코드가 명시적으로 표현되어 가독성이 향상된다. 필요한 메서드가 자동으로 생성되기 때문에 코드에 불필요한 부분이 줄어들어 코드를 이해하고 유지보수하기가 쉬워진다.
public record Point(int x, int y) {
}
Point p1 = new Point(1, 2);
Point p2 = new Point(1, 2);
System.out.println(p1.equals(p2)); // TRUE
728x90
반응형
'SpringBoot' 카테고리의 다른 글
[SpringBoot/스프링부트] Prometheus와 Grafana를 이용한 서버 모니터링 (0) | 2024.04.12 |
---|---|
[Spring/스프링] JPA CompositeKey 복합키 설정 (0) | 2024.02.21 |