작성
·
152
0
Item쪽에서 change() 메서드를 만들어야하나요 ?
만약 만들게된다면 service에서는 파라미터값으로
Id값을 안넘겨주고 findeOne만 실행하게 되는데
Item class에서는 값을 셋팅할때 book에대한
Author는 수정을 어떻게하나요??
Item에 존재하는 필드로 넘겨받은 값들은 수정할 수 있는데
Book에 있는 Author는 수정을 못하는데 어떻게 하면 되나요?
답변 2
3
안녕하세요. pok_lu님
Book에 별도의 변경용 메서드를 만들면 됩니다. 그리고 그 메서드를 호출하려면 Book 타입으로 조회해야겠지요?
1. 다운 케스트 사용: findOne을 해서 Item을 받아도 Book 데이터를 조회한 것이면, 자바의 downcast를 사용해서 Book으로 타입을 내릴 수 있습니다. (자바 다운 케스트로 검색해보세요^^)
2. 처음부터 Book 타입을 조회할 수 있도록 별도의 BookRepository를 만드셔도 됩니다.
3. 다형성을 활용하는 방법이 있습니다. Item의 change() 메서드를 Book에서 오버라이딩 하고, 대신에 change() 메서드의 파라미터를 여러 데이터를 담을 수 있는 Dto를 넘깁니다. 그리고 오버라이딩 된 메서드가 해당 기능을 처리하게 합니다.
각각 장단점이 있어서, 상황에 맞는 방법을 선택하시면 됩니다^^
감사합니다.
1