inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

Value 오브젝트(@Embeddedable 객체)는 그대로 노출해도 된다

343

Yong D

작성한 질문수 22

2

개발자님 강의 계속 반복해서 열심히 듣고있습니다

강의 도중에 

엔티티는 노출하면 안된다 하지만 Value 오브젝트는 바뀔일이 없기 때문에 노출해도 된다고 하셨는데

만약에
Address 값 객체가 있다고 했을때  Address의 필드  String cityCode가   Interger areaCode로 바뀐다고 해도 문제가 없나요??


JPA java spring spring-boot

답변 2

5

김영한

안녕하세요. Yong D님 좋은 질문입니다.

엔티티는 기본적으로 자주 변경되기 때문에 외부에 API로 노출하면 외부 API 스펙자체가 변경되어 버립니다.

반면에 Value 오브젝트는 엔티티와 비교해서 자주 변경되지 않습니다. 예를 들어서 우리가 LocalDateTime이나, String 클래스를 안전하게 외부에 노출해도 되는 이유와 유사합니다.

아마 중간에 변경이 일어난다면 Value 오브젝트가 아니라 보통 엔티티 자체에 추가가 되겠지요.

물론 이러한 Value 오브젝트도 질문하신 것 처럼 변경이 일어날 수 있습니다. 그러면 API 스펙 자체가 틀어지고 API 스펙에 문제가 발생할 수 있습니다.

그래서 Value 오브젝트는 신중하게 설계하고, 크게 변경이 일어나지 않을 때 만드는 것이 좋습니다.

1

Yong D

답변 감사합니다 😀

강의 관련 외 질문입니다.

0

65

2

SpringBoot4 + Hibernate7 모듈 등록 방법 공유

0

86

1

BeanCreationException

0

86

3

Update 후 UpdateMemberResponse 매핑할 때

0

46

1

트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?

0

98

2

페이징 + 검색조건 관련해서 질문드립니다.

0

70

1

Query Dsl Q파일 질문입니다.

0

81

1

루트 쿼리라는것은

0

58

1

메서드를 분리하는 기준

0

62

1

findAllWithMemberDelivery 메서드 질문드립니다.

0

108

3

연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략

0

83

2

fetch join과 영속화와 OSIV의 관계

0

84

2

Distinct 사용 전 결과에 대한 의문

0

113

2

레포지토리 계층에서의 트랜잭션에 대한 의문

0

56

1

영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.

0

78

2

dto 필드 속 엔티티 여부

0

58

1

뷰템플릿 사용 시

0

76

2

Result 클래스 관련 질문

0

56

1

@PostConstruct 프록시 관련 질문드립니다

0

85

1

DTO 대신 Form 사용은 안되나요?

0

133

1

OSIV ON 상태일 때

0

95

1

fetch join VS fetch join 페이징 궁금증

0

179

2

양방향 연관관계 알아보는 법?

0

104

1

16강 17강 간단 정리 이게 맞을까요 ?

0

165

2