인프런 커뮤니티 질문&답변
답변 1
1
김영한
지식공유자
안녕하세요. JW Jung님
질문을 여러번 읽어보았지만, 정확하게 어떤 점이 궁금하신지 이해가 잘 되지 않습니다.
마지막에 1,2,3,4를 적어주셔서 이 부분에 제가 아는 한에서 답을 드리겠습니다.
1. 마지막 그림의 위 방법(연관관계 편의 메서드 변형?)이 맞는 방법인까요? 아니라면 Category, Subdivision등 다른 엔티티에서 이를 관리하는 더 좋은 방법이 있을까요?
-> 코드상 정확하게 안보이지만 cascade를 사용하신 것 같아요. cascade는 가급적 사용하지 마시고 각각의 리포지토리가 엔티티를 관리하는 것이 더 좋아보입니다. cascade는 개인 소유의 엔티티에 사용하는 것을 권장드립니다. (고민이 된다면 사용하지 않는 것이 더 좋습니다.)
2. 마지막 그림의 아래 방법은 맞는 방법인가요? 만약 맞다면 (엔티티 내부라고하더라도) 분기문을 여러개 가지게 되는데 괜찮은 방법인가요?
-> 1번에 말씀드린 내용을 적용하면 어느정도 자연스럽게 해결될 것 같습니다.
3. 서비스 계층에서 삼항 연산자로 분기문을 만든것이 계속 걸리는데 더 좋은 방법이 있을까요?
-> 1번에 말씀드린 내용을 적용하면 어느정도 자연스럽게 해결될 것 같습니다.
4. 캡슐화로 서비스 계층을 더 얇게 만드는 방법이 있을까요?
-> 저는 이정도도 괜찮은 것 같습니다.
감사합니다.






아! 메인 질문은 연관관계 편의 메서드를 올바르게 설정했는지가 질문이었습니다. 수업시간에는 team.getMember( ).add(this)와 같이 해결했는데 저는 null 할당-> new Category 할당 으로 처리를 했습니다.
>> Q. 연관관계를 null로 만들고 다시 할당하면추가쿼리가 안 발생하는데 이렇게 해도 괜찮을까요?
질문 하려고 자료를 정리하다보니까 과연 저 방법이 맞는 것일까? 에 대해 또 의구심이 들었습니다. 나머지 답변 감사합니다. 추가로 일단 cascade는 다 끊었던 상태입니다.