{TIL 22} JPA 연관관계

YeilieY·2022년 10월 10일

항해99

목록 보기
27/27
post-thumbnail

JPA 연관관계 예시

관계코드 선언Entity
1 : N@OneToManyOrder(1):Food(N)배달 주문 1개에 음식 여러개 선택 가능
N : 1@ManyToOneOwner(N):Retaurant(1)음식점 주인 여러명이 하나의 음식점을 소유 가능
1 : 1@OneToOneOrder(1):Coupon(1)배달 주문 1개 주문 시, 쿠폰 1개만 할인 적용 가능
N : N@ManyToManyUser(N):Restaurant(N)고객은 음식점 여러개 찜하기 가능 / 음식점은 고객 여러명에게 찜하기 가능
중요)) 항상 Entity 본인 중심으로 관계를 생각해야함!!!
  • 주문 (Order) 코드
@Entity
public class Order {
    @OneToMany
    private List<Food> foods;

	@OneToOne
	private Coupon coupon;
}
  • 음식점주 (Owner) 코드
@Entity
public class Owner {
	@ManyToOne
	Restaurant restaurant;
}
  • 고객 (User) 코드
@Entity
public class User {
	@ManyToMany
	List<Restaurant> likeRestaurants;
}

데이터 베이스 제약조건

- 테이블 단위에서 데이터의 무결성을 보장하는 규칙
- 테이블 수정 작업하는 경우 잘못된 트랜잭션 수행을 방지하는 역할
- 테이블 간 제약조건이 있어서 종속성이 있는 경우 테이블 삭제를 방지
  • PK (Primary Key) :

    • 테이블 생성 시 고유의 단 한 개의 PK 설정
    • 중복이나 NULL 불가
    • 고유 인덱스 자동 생성
    • PK 지정 가능한 칼럼이 여러 개 있을 경우, 많이 사용되어지는 간단한 칼럼을 선택함
  • FK (Foreign Key) :

    • 외부 식별자키 로 테이블 간의 관계를 의미함
    • 테이블 간의 잘못된 맵핑을 방지하는 역할을 함
    • 두 테이블 간의 종속이 필요한 관계이면 그 접점이 되는 칼럼을 FK 로 지정하여 서로 참조할 수 있도록 관계를 맺어줌
  • UK (Unique Key) :

    • 고유키
    • 중복된 값을 허용하지만 여러 개 NULL 값을 허용함
    • 고유 인덱스를 자동 생성

연관 관계 맵핑 시 고려해야할 점 두가지

  • 단방향, 양방향
  • 연관 관계의 주인
profile
Fun_Dev

0개의 댓글