본문 바로가기
반응형

Framework14

JPA - 연관관계의 매핑 [N:1다대일 | 1:N 일대다] JPA에서 다양한 연관관계의 매핑에 대해서 알아보자. JPA에서는 객체와 객체의 사이를 다양한 관계로 매핑할 수 있다. 이때 고려해야할 사항이 세가지가 있다. 다중성 단방향, 양방향 연관관계의 주인 보통 위 세가지 사항을 고려해서 연관관계를 설정하여야 한다. 그렇다면 위의 고려사항을 생각해서 JPA로 만들 수 있는 연관관계의 종류에 대해 알아보자. 다대일 [ N:1 ] 실무에서 가장 많이 쓰이는 연관관계로 N:1의 관계를 갖는다. 여기서 외래키는 테이블 기준으로 N쪽에 설정되어야 한다. 즉, N이 연관관계의 주인인 관계이다. 다대일 단방향 Member는 N, Team은 1의 관계로 N:1 관계이다. DB에서 N쪽에 외래키를 걸듯이, 객체에서도 N쪽에 참조를 걸어야 1에게 찾아갈 수 있다. 그래서 N쪽에 .. 2022. 12. 20.
JPA - 양방향 연관관계와 연관관계 주인 - 2 양방향 매핑시에 주의해야할 사항에 대해 알아보자. 연관관계의 주인에 값 미입력 먼저, 양방향 매핑시 가장 많이 하는 실수 중 하나는 연관관계의 주인에 값을 입력하지 않는 것이다. 바로 예시를 봐보자. Team team = new Team(); team.setName("TeaA"); em.persist(team); Member member = new Member(); member.setName("member1"); // 역방향 (주인이 아닌 방향)만 연관관계 설정 team.getMembers().add(member); em.persist(member); 위와 같이 작성할 경우 연관관계의 주인인 Member에서는 Team을 참조하지 못하게 된다. 왜냐하면, 이전 내용에서 기술했듯이 연관관계의 주인만이 Fk를.. 2022. 12. 15.
JPA - 양방향 연관관계와 연관관계 주인 - 1 양방향 매핑 양방향 매핑이란 아래의 사진과 같이 서로 다른 두객체가 서로를 참조하고 있는 형태이다. 객체 연관관계는 다음과 같다. 회원 ➡️ 팀 (team) 팀 ➡️ 회원 (members) 여기서 Team과 Member는 일대다 관계를 맺고 있어 List 컬렉션을 사용해준다. 위의 객체 관계를 테이블로 표현하면 아래와 같다. 데이터베이스에선 PK와 FK를 통해 일대다 관계 설정과 양방향 조회를 할 수 있다. 양방향 연관관계 매핑 이제 코드를 통해 실제로 JPA로 어떻게 양방향 관계를 맺는지 알아보자. Team.class @Entity public class Team { @Id @GeneratedValue @Clumn(name = "TEAM_ID") private Long id; private String.. 2022. 12. 14.
JPA - 기본키 매핑 JPA에서는 기본키의 값을 설정하는데 다양한 옵션을 제공한다. 먼저 기본키 매핑부터 진행해보자. 기본 키 매핑 방법 @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @Id와 @GeneratedValue라는 어노테이션을 통해 기본키 매핑을 해줄 수 있다. 만약 기본키 값을 직접 할당해줄 경우 @Id만 사용하면 된다. 반대로 자동 생성을 원할 경우 @GeneratedValue를 사용하면 된다. @GeneratedValue을 사용할 경우 아래의 매핑전략을 활용할 수 있다. IDENTITY : 데이터베이스에 위임. (MYSQL) SEQUENCE : 데이터베이스 시퀀스 오브젝트 사용. @SequenceGenerator 필요. (ORACLE.. 2022. 12. 13.
반응형