본문 바로가기

Spring/JPA25

연관관계 - @OneToOne JPA에서는 DB 테이블 간 관계를 매핑하기 위한 어노테이션들을 지원한다 이 페이지에서는 1:1 관계를 매핑하는 @OneToOne 어노테이션에 대해 알아보겠다 1:1 관계의 경우, 외래키 관리를 주 테이블에서 할 수도 있고 대상 테이블에서 할 수도 있다 예를 들어, 한 사용자 당 1개의 휴대전화만 가질 수 있다고 해보자 그럴 경우, 사용자와 휴대전화 관계는 다음과 같이 DB와 Entity에서 1:1 관계로 표현될 수 있다 (1:1 관계의 경우 외래키에 Unique 제약조건이 걸려있어야 한다) 주 테이블에서 외래키를 관리할 경우 DB JPA 대상 테이블에서 외래키를 관리할 경우 DB JPA 연관관계의 주인 1:1 관계에서는 어느 쪽을 연관관계를 정하든 크게 문제가 없다 다만, DBA와 벡엔드 개발자의 관점.. 2023. 3. 22.
연관관계 - @OneToMany JPA에서는 DB 테이블 간 관계를 매핑하기 위한 어노테이션들을 지원한다 이 페이지에서는 1:N 관계를 매핑하는 @OneToMany 어노테이션에 대해 알아보겠다 1:N 관계는 다음과 같이 DB와 Enitity로 표현될 수 있다 DB Entity 연관관계의 주인 1:N 관계에서 1의 관계에 있는 Department의 employees가 연관관계의 주인이 된다 1:N 관계에서 1의 관계에 있는 Department의 employees가 연관관계의 주인이므로 Entity 상에서는 외래키(참조값) 관리를 Department의 employees에서 하고 있지만 DB에서는 Employee의 department에서 외래키 관리를 하고 있으므로 Department 엔티티의 employees(참조값)가 변경될 경우, De.. 2023. 3. 18.
연관관계 - @ManyToOne JPA에서는 DB 테이블 간 관계를 매핑하기 위한 어노테이션들을 지원한다 이 페이지에서는 N:1 관계를 매핑하는 @ManyToOne 어노테이션에 대해 알아보겠다 N:1 관계는 다음과 같이 DB와 Entity로 표현될 수 있다 DB JPA 연관관계의 주인 N:1 관계에서 N의 관계에 있는 Employee의 department가 연관관계의 주인이 된다 양방향 연관관계 적용 N:1 관계에서 1의 관계에 있는 Department의 employees에 mappedBy 속성을 추가해준다 2023. 3. 17.
양방향 연관관계 주의점 양방향 관계는 테이블에서 외래키를 이용하여 양쪽 테이블에 접근하는 것처럼 양쪽 Entity에 서로의 참조값을 갖고 있게 함으로써 양방향으로 Entity에 접근을 가능하게 한다 다만, 양쪽 Entity에 서로의 참조값을 갖고 있어서 주의할 점이 몇가지 있는데 아래와 같이 1:N의 관계를 가진 Entity를 예시로 들어서 설명하겠다 mappedBy가 위치한 곳은 읽기 전용이다 연관관계의 주인인 곳에서만 참조값을 변경할 수 있다 연관관계의 주인이 아닌 쪽의 값을 변경하더라도 읽기 전용이기 때문에 DB에 반영되지 않는다 양쪽에 값을 넣어주자 아래 코드를 살펴보자 위 코드에서는 연관관계의 주인인 쪽에만 참조값을 저장하고 있다 여기서 한가지 문제가 있다. 객체지향적인 관점에서 봤을 때, Employee에서는 Dep.. 2023. 3. 15.