본문 바로가기

Spring/JPA25

양방향 연관관계 - 연관관계의 주인 '연관관계의 주인'개념을 이해해기 위해서는 DB와 JPA에서의 외래키 관리방법의 차이점에 대해서 알아야 한다 예를 들어, Department와 Employee라는 테이블이 있다고 치자 Department와 Employee는 1:N의 관계이다 외래키 관리방법의 차이점 DB DB의 경우에는 N의 관계에 있는 Department에 외래키를 저장하여 관리한다 Department에 저장된 외래키 하나로 양방향 접근이 가능하다 JPA JPA의 경우 양방향 접근이 가능하려면 Department와 Employee 양 쪽 모두에 서로의 참조값이 있어야 한다 DB의 경우에는 외래키(참조값)를 한 쪽에서만 저장하고 있어서 외래키(참조값)를 관리하는 주체가 명확하다 -> N의 관계에 있는 테이블의 컬럼에 외래키를 저장하고 관.. 2023. 3. 12.
연관관계 - 양방향 연관관계(기본 컨셉) 단방향 연관관계에서는 1:N의 관계에서 'N'에 해당하는 Entity에 @JoinColumn 애너테이션을 이용하여 단방향 연관관계를 표현하였다. 단방향 연관관계는 한계가 존재하는데, 한 쪽 방향으로만 데이터를 조회할 수 있다 아래와 같은 테이블이 있다고 치자 관계형DB에서는 외래키인 DEPT_ID를 이용하여 Employee와 Department 양 쪽 모두 조회가능하다 하지만, 위 테이블과 매핑되는 Entity를 보자. 보기 쉽게 표현하면 아래와 같은 그림이 될 것이다 위 Entity의 경우, Employee에서는 Department 객체의 참조값을 이용해서 Department 데이터를 조회가능하지만, Department에서는 Employee의 참조값이 존재하지 않으로 Employee 조회가 불가능하다 .. 2023. 3. 7.
연관관계 - 단방향 연관관계 이 페이지에서는 JPA에서 테이블 간 관계를 어떻게 표현하는지 알아보도록 하겠다 아래와 같이 Department(부서)와 Employee(직원) 테이블이 있다고 치자. 위 테이블 간 관계를 그대로 Entity로 표현하면 아래와 같이 표현할 수 있다. Employee @Entity public class Employee{ /** 직원 id */ @Id @Column(name="EMPLOYEE_ID") private Long id; /** 직원 이름 */ private String name; /** 직원 나이 */ private Integer age; /** 부서 id */ private Long departmentId; } Department @Entity public class Department{ /*.. 2023. 2. 28.
Entity-Table 매핑 - 기본키 매핑 JPA에서 기본키를 어떻게 매핑할 수 있는지 알아보겠다 먼저, 엔티티에서 기본키를 매핑하려면 기본키에 해당하는 필드 위에 @Id 애너테이션을 붙이면 된다 @Entity public class Member{ @Id public Long id; } 그리고 기본키 타입이 정수형일 경우 Insert시 기본키 값이 자동으로 증가되게 하려면 @GeneratedValue라는 애너테이션을 기본키에 해당하는 필드 위에 붙이면 된다 @Entity public class Member{ @Id @GerneratedValue(strategy=GenerationType.AUTO) public Long id; } @GeneratedValue에는 기본키값을 증가시키는 여러 전략들이 존재한다 @GeneratedValue 전략 Gene.. 2023. 2. 24.