묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
연관 관계의 주인이 필요한 이유
안녕하세요, 강의 들으며 공부하다가 궁금한 점이 있어서 질문 올립니다! 연관 관계의 주인만이 등록, 수정을 할 수 있고 주인이 아닌 쪽은 조회만 할 수 있다는 것을 배웠는데요 이러한 "연관 관계의 주인"이라는 컨셉이 필요한 이유가 무엇인가요? Team과 Member라는 엔티티가 있을 때 team 객체로 member를 수정하든 member 객체로 team을 수정하든 누구를 통해서든 등록, 수정 할 수 있으면 편할텐데요. 제가 이해한 바로는 "연관 관계의 주인"이라는 컨셉이 있는 이유가 어느 파일에서는 Team을 통해 member를 변경하고 어느 파일에서는 Member를 통해 Team을 변경하면 변경하는 코드의 일관성이 없기 때문에 오로지 연관 관계의 주인만 값을 변경할 수 있게끔 강제한 것이라고 이해했는데 올바른 이해인가요? 더 깊은 이유가 있다거나 다른 이유가 있다면 알고 싶습니다. 답변 기다리겠습니다. 요즘 날이 더운데 더위 조심하세요!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
연관관계 주인 위배?
안녕하세요. 강사님. 강의 너무 잘 듣고 있습니다. 이번 Cascade, OrphanRemoval 강의를 들으면서 떠오르는 의문점이 하나 있어 질문 드립니다. 이전 "연관관계 주인" 강의에서 외례키가 있는 쪽이 주인이 되고 mappedBy를 선언한 쪽은 readOnly로 사용하는 것이 좋다고 말씀하셨는데요. Cascade와 OrphanRemoval 기능을 사용하게 되면 mappedBy를 선언한 쪽에서 자식을 관리하게 되면서 연관관계 주인이 뒤바뀌는 느낌이 들었습니다. 좋은 기능인 것 같지만 이렇게 사용하면 부모를 조작했는데 자식과 관련된 Query가 나가게 되므로 혼돈이 생기진 않을까 하는 생각이 들었습니다. 제가 잘못 이해하고 있는 것인지 궁금합니다.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
@joinColumn 질문입니다.
안녕하세요 선생님. @OneToMany(cascade = CascadeType.ALL)@JoinColumn(name = "member_id")private List<AddressEntity> addressEntities = new ArrayList<>(); 이 코드에 대해 질문이 있습니다! 제가 이해한 바로는 @JoinColumn은 1 대 다 관계에서 다에 위치해 있어 해당 엔티티에 외래키 속성 값을 매핑 하는걸로 이해를 했습니다. 아래와 같은 양방향 연관관계 코드처럼요. @ManyToOne(fetch = FetchType.LAZY)@JoinColumn(name = "member_id")private Member member; 질문 1. @JoinColumn 어노테이션은 꼭 다 에 위치해 있지 않아도 되나요? 2. 아니면 단방향인 경우만 1의 위치에 있어도 되는 건가요? 3. 맨 위의 코드처럼 단방향인 경우 연관관계의 주인은 mappedBy의 속성이 없기에 member 엔티티가 되는건가요? 감사합니다!