본문 바로가기
Spring Boot/인스타그램 클론코딩

연관관계 개념

by hyhs 2022. 5. 27.
728x90
반응형
SMALL

05/26

36강

연관관계 개념잡기

1. FK는 Many가 가져간다. 

Many(게시글) to One (사용자) 

One이 FK를 가지게 되면 게시글1,게시글2 여러개가 담김 - 

 

2. N : N의 관계는 중간테이블(1)이 생긴다.

N : 1 : N

N(사용자) : 1(예매) : N(영화)

N(사용자 : 1(구독) : N(사용자)

 

Subscribe Table (FK 가짐)

ID ㅣ 구독하는 유저 ㅣ구독받는 유저

unique 제약조건 1개만 걸 경우

@Column(length = 20, unique = true)
private String username;

 

unique 제약조건 2개 걸 경우

@Table(
		uniqueConstraints = {
				@UniqueConstraint( //제약조건
						name = "subscribe_uk",
						columnNames = {"fromUserId", "toUserId"}
				)
		}
)

 

38강

@Modifying // INSERT, DELETE, UPDATE를 네이티브 쿼리로 작성하려면 해당 어노테이션 필요
	@Query(value="INSERT INTO subscribe(fromUserId, toUserId, createDate) VALUES(:fromUserId, :toUserId, now())", nativeQuery = true) // 변수 바인딩
	int mSubscribe(int fromUserId, int toUserId); // 성공시 1(변경된 행의 개수가 리턴됨), 실패시 -1

 

JPA에서 직접 쿼리를 작성할 수 있는 방법

  • JPQL로 작성 - 엔티티 클래스를 바라보고 작성, nativeQuery = false (default) 
  • 일반 SQL로 작성 - 데이터베이스를 바라보고 작성, nativeQuery = true

JPQL : JPA의 일부분으로 정의된 플랫폼 독립적인 객체지향 쿼리 언어

 

728x90
반응형
LIST

댓글