JAVA

태태개발일지 - 레코드

태태코 2024. 12. 25. 19:19
반응형

레코드

토비의 스프링을 수강하는데 레코드를 사용하여 궁금해서 서칭해봤다.

 

 

자바에서 레코드란?  불변객체이다.

 

 

불변객체를 만들 때

1. getter()

2. setter()

3. 생성자

4. toString

 

두가지의 속성만 가지는 클래스를 생성하려고 해도,  너무나 많은 코드가 필요하다

 

이를 Boilerplate Code 가 많다. 라고한다.

 

 

Boilerplate Code

과거 신문사에서 신문마다 강철로 찍어내는 것을 뜻하고 (자주 반복되는 코드)를 의미힌다.

 

레코드 사용이유

 

필드값 추가시 보일러코드 수정이 일어난다.

 

레코드 사용예시

선언동시에 사용할 필드값을 사용해야한다.

정적필드는 사용가능.

 

public record Person(String name, int age) {
}

 

데이터를 get 할 때.

 

person.name();

person.address();


public class Main {
    public static void main(String[] args) {
        Person person = new Person("John", 25);

        System.out.println(person.name()); // John
        System.out.println(person.age());  // 25

        // person.name = "Jane"; // 컴파일 에러 (값 변경 불가)
    }
}

public record Person(String name, int age) {
}

 

재정의는 원하는 것만.

 

제한 사항

1. 상속 불가:

Record는 final로 선언되기 때문에 다른 클래스가 상속할 수 없다

2. 복잡한 로직에 적합하지 않음:

로직이 포함된 복잡한 객체 대신 간단한 데이터 모델에 적합하다.

3. Java 14 이상:

Java 14 이상 버전에서만 사용할 수 있다.(Java 16부터 정식 버전)

 

 

즉. 비지니스 로직이 들어간 도메인 객체로는 사용할 수 없다. 하지만 단순 조회용 DTO로 사용하기 좋다.

 

반응형