[Java] record 다시 보기

snowballnote·5일 전

Biz Assist에서 낙찰방법 판정 결과를 묶어서 반환하면서
record를 사용했다.

public record BidAwardMethodResult(
        BidAwardMethodCategory category,
        BidAwardMethodStatus status,
        String reason,
        BidAwardMethodSource source
) {
}

record가 뭐였지

record는
값을 담는 용도의 클래스를 간단하게 만들 수 있는 문법이다.

보통 DTO처럼

값 저장
값 전달

이 목적일 때 잘 맞는다.

일반 클래스로 만들면
필드와 생성자 같은 코드를 직접 작성해야 하지만

record는 선언만 해도
필요한 구조가 자동으로 만들어진다.

값 꺼내는 방법

일반 클래스에서는 보통

result.getStatus();

처럼 getter를 사용하지만

record는

result.status();
result.reason();
result.source();

처럼 컴포넌트 이름을 바로 사용한다.

Biz Assist에서는 왜 썼나

낙찰방법을 판정하면
결과 하나만 필요한 게 아니었다.

어떤 방식인지
판정 상태가 뭔지
왜 그렇게 판단했는지
어떤 정보를 근거로 했는지

를 같이 넘겨야 했다.

그래서

BidAwardMethodResult

하나에 묶었다.

예를 들면

category
→ QUALIFICATION_REVIEW

status
→ CONFIRMED

reason
→ 왜 적격심사라고 판단했는지

source
→ 어떤 데이터에서 확인했는지

이런 식이다.

그냥 class랑 뭐가 다르지

record는 주로
만들어진 뒤 값이 바뀌지 않는 데이터 묶음에 잘 맞는다.

그래서 상태를 계속 수정하는 객체보다는

조회 결과
판정 결과
API 응답
DTO

같은 데 쓰기 좋다.

다시 정리

class
→ 상태와 동작을 같이 가지는 일반적인 객체

record
→ 여러 값을 하나로 묶어서 전달할 때 편함

Biz Assist에서는

낙찰방법 판정 결과와 근거를 한 번에 전달하기 위해 record를 사용했다.

record를 그냥 짧은 클래스라고 생각했는데
이번에 보니까

결과값 묶음을 표현할 때 쓰는 타입

이라고 생각하면 더 이해하기 쉬웠다.

profile
개발자로 이 험난한 세상 살아가기

0개의 댓글