연관관계 매핑 4

[JPA] 양방향 연관관계 & 연관관계의 주인 (2)

이번에는 양방향 연관관계에서의 저장과 편의메소드를 다뤄보겠습니다. 왜 이 주제를 따로 다뤄야 하는지는 저번에 이야기 했었던 연관관계의 주인과 연관이 있습니다. 연관관계의 주인이 아닌 쪽은 읽기만 할 수 있다고 적었었는데요, 그 말은 연관관계의 주인 쪽에서 저장을 할 수 있다는 말과 같습니다. public void testSaveNonOwner() { Member memebr1 = new Member("member1", "회원 1"); em.persist(member1); Member memebr2 = new Member("member2", "회원 2"); em.persist(member2); Team team1 = new Team("team1", "팀 1"); team1.getMembers().add(m..

BackEnd/JPA 2022.05.14

[JPA] 양방향 연관관계 & 연관관계의 주인 (1)

이번에는 양방향 연관관계와 연관관계의 주인에 대해서 작성해보겠습니다. 기본(3) 으로 넣을까하다가 그렇기에는 중요한 개념인 것 같아서 따로 뺐습니다. 앞에 작성했던 글에서는 모두 단방향 연관관계만 다루었습니다. 양방향 연관관계부터 시작해보겠습니다. 양방향 연관관계 DB의 테이블에서는 단방향이라는게 없었습니다. 외래 키를 통해서 항상 양쪽 모두에게서 접근이 가능했죠. 하지만 객체간의 관계에서는 어떻게 해야할까요? 위의 예시에서 먼저 생각할 점은 다대일 관계라는 것 입니다. 다시 코드를 통해서 보겠습니다. 먼저 Member 의 경우에는 이전의 예시와 다를게 없어보입니다. @Entity public class Member { @Id @Column(name="MEMBER_ID") private String id..

BackEnd/JPA 2022.05.09

[JPA] 연관관계 매핑 : 기본 (2)

지난 글에 이어서 연관관계 매핑 기본이라고 생각되는 부분을 이어서 작성하겠습니다. 이번에는 연관관계를 매핑한 엔티티를 어떻게 저장,수정하는지 알아보려고 합니다. public void save() { Team team1 = new Team("team1", "팀 1"); em.persist(team1); Member member1 = new Member("member1", "회원 1"); member1.setTeam(team1); em.persist(member1); Member member2 = new Member("member2", "회원 2"); member2.setTeam(team1); em.persist(member2); } 위의 코드를 보겠습니다. 코드를 보면 두개의 Member 엔티티에 Team..

BackEnd/JPA 2022.05.08

[JPA] 연관관계 매핑 : 기본 (1)

JPA 에서 첫번째로 넘어야 할 산이라고 생각되는 연관관계 매핑입니다. 연관관계 매핑은 단순히 방향을 정하는 것과 다중성을 생각하는 것이 아니라 어플리케이션의 설계와 관련이 있어서 더 어렵기도 하고 중요하다고 생각이 드는 지점입니다. 그 전에 패러다임의 불일치라는 말을 많이 사용했는데, 그 전까지 이해가 잘 안되었다면 연관관계 매핑을 공부하면서 왜 패러다임의 불일치라는 말이 사용되는지 이해하게 될거라 생각합니다. 먼저, RDB 의 경우, 테이블끼리의 외래키로 매핑을 하는 형태입니다. JPA는 이걸 객체의 참조로 해결해야 하기 때문에 패러다임의 불일치가 생기죠. 이 그림을 보면 알 수 있듯이, RDB의 테이블은 외래키를 중심으로 양방향으로 참조가 가능합니다. 하지만 객체의 경우는 다릅니다. 참조하고자 하는..

BackEnd/JPA 2022.05.08