Biz Assist에서 낙찰방법 판정 결과를 묶어서 반환하면서
record를 사용했다.
public record BidAwardMethodResult(
BidAwardMethodCategory category,
BidAwardMethodStatus status,
String reason,
BidAwardMethodSource source
) {
}
record는
값을 담는 용도의 클래스를 간단하게 만들 수 있는 문법이다.
보통 DTO처럼
값 저장
값 전달
이 목적일 때 잘 맞는다.
일반 클래스로 만들면
필드와 생성자 같은 코드를 직접 작성해야 하지만
record는 선언만 해도
필요한 구조가 자동으로 만들어진다.
일반 클래스에서는 보통
result.getStatus();
처럼 getter를 사용하지만
record는
result.status();
result.reason();
result.source();
처럼 컴포넌트 이름을 바로 사용한다.
낙찰방법을 판정하면
결과 하나만 필요한 게 아니었다.
어떤 방식인지
판정 상태가 뭔지
왜 그렇게 판단했는지
어떤 정보를 근거로 했는지
를 같이 넘겨야 했다.
그래서
BidAwardMethodResult
하나에 묶었다.
예를 들면
category
→ QUALIFICATION_REVIEW
status
→ CONFIRMED
reason
→ 왜 적격심사라고 판단했는지
source
→ 어떤 데이터에서 확인했는지
이런 식이다.
record는 주로
만들어진 뒤 값이 바뀌지 않는 데이터 묶음에 잘 맞는다.
그래서 상태를 계속 수정하는 객체보다는
조회 결과
판정 결과
API 응답
DTO
같은 데 쓰기 좋다.
class
→ 상태와 동작을 같이 가지는 일반적인 객체
record
→ 여러 값을 하나로 묶어서 전달할 때 편함
Biz Assist에서는
낙찰방법 판정 결과와 근거를 한 번에 전달하기 위해 record를 사용했다.
record를 그냥 짧은 클래스라고 생각했는데
이번에 보니까
결과값 묶음을 표현할 때 쓰는 타입
이라고 생각하면 더 이해하기 쉬웠다.