인프런 커뮤니티 질문&답변

pok_lu님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

변경 감지와 병합(merge)

메서드를 만들어서 사용할때는

20.07.09 22:56 작성

·

147

0

Item쪽에서 change() 메서드를 만들어야하나요 ?

만약 만들게된다면 service에서는 파라미터값으로

Id값을 안넘겨주고 findeOne만 실행하게 되는데

Item class에서는 값을 셋팅할때 book에대한

Author는 수정을 어떻게하나요??

Item에 존재하는 필드로 넘겨받은 값들은 수정할 수 있는데

Book에 있는 Author는 수정을 못하는데 어떻게 하면 되나요?

답변 2

3

김영한님의 프로필 이미지
김영한
지식공유자

2020. 07. 10. 00:21

안녕하세요. pok_lu님

Book에 별도의 변경용 메서드를 만들면 됩니다. 그리고 그 메서드를 호출하려면 Book 타입으로 조회해야겠지요?

1. 다운 케스트 사용: findOne을 해서 Item을 받아도 Book 데이터를 조회한 것이면, 자바의 downcast를 사용해서 Book으로 타입을 내릴 수 있습니다. (자바 다운 케스트로 검색해보세요^^)

2. 처음부터 Book 타입을 조회할 수 있도록 별도의 BookRepository를 만드셔도 됩니다.

3. 다형성을 활용하는 방법이 있습니다. Item의 change() 메서드를 Book에서 오버라이딩 하고, 대신에 change() 메서드의 파라미터를 여러 데이터를 담을 수 있는 Dto를 넘깁니다. 그리고 오버라이딩 된 메서드가 해당 기능을 처리하게 합니다.

각각 장단점이 있어서, 상황에 맞는 방법을 선택하시면 됩니다^^

감사합니다.

1

pok_lu님의 프로필 이미지
pok_lu
질문자

2020. 07. 11. 21:42

정말 감사합니다 !!

pok_lu님의 프로필 이미지

작성한 질문수

질문하기