JAVA record

김개발세발바닥·2024년 6월 23일

JAVA

목록 보기
8/12

record.

record 데이터 전달 객체(Data Transfer Object, DTO)를 간편하게 정의하기 위한 용도로 만들어졌다.
주로 불변 객체를 쉽게 정의하고 관리할 수 있도록 돕는다.

간결한 문법.

  • record는 클래스 정의를 단순화하여, 필드, 생성자, 접근자 메서드 등을 자동으로 생성한다.
public record Person(String name, int age) {}

자동으로 생성되는 메서드.

record 모든 필드를 매개변수로 받는 생성자, toString(), equals(), hashCode() 메서드를 자동으로 생성한다.
각 필드에 대한 접근자 메서드도 자동 생성된다. 필드가 name이라면 접근자 메서드는 name()이 된다.

불변성.

record는 불변 객체로 설계되었다.
즉, 필드는 final로 선언되며, 변경할 수 없다.

명확한 의도.

record는 주로 데이터 보유 용도로 사용되며, 비즈니스 로직을 담지 않는다.
이는 클래스가 가진 의도를 더 명확하게 해준다.

public record Employee(String name, int id, double salary) {
    public Employee {
        if (salary < 0) {
            throw new IllegalArgumentException("Salary cannot be negative");
        }
    }
}

Employee record는 name, id, salary 필드를 가지고 있다.
생성자 블록에서 salary 값이 0보다 작을 경우 예외를 던지도록 한다.
이 블록은 record 생성 시 추가적인 검증을 위해 사용될 수 있다.

장점

record를 사용하면 코드의 양이 줄어들어 가독성이 향상된다.
그리고 자주 사용하는 메서드들을 자동으로 생성해주어 개발자가 반복적으로 작성할 필요가 없다. 롬복에서 벗어날 수 있다!
가장 장점인 불변 객체를 쉽게 만들 수 있어, 객체의 상태 변화를 걱정할 필요가 없다.

단점

상속을 지원하지 않으므로, 상속을 통한 코드 재사용이 필요한 경우에는 적합하지 않다.
그리고 비즈니스 로직이 포함된 복잡한 객체를 만들기에는 부적합하다.
Java Record는 데이터 중심의 객체를 간편하게 정의하고 사용할 수 있도록 도와주는 유용한 기능이다. DTO, VO(Value Object) 등 주로 데이터를 보유하고 전달하는 역할을 하는 클래스에 특히 유용하다.

Dto를 만들 때 항상 @Data를 사용했는데 이제 @Data는 졸업하고 record를 새로 도입해봐야지~

0개의 댓글