티스토리 뷰

2022/jpa

day04[다대일관계, N:1]

yanii 2022. 11. 30. 16:05

pet에서만 owner에 접근 가능

다대일 연관관계 단방향 관계(n:1)

 

pet은 여러마리고 owner 1명 >> @ManyToOne

pet을 호출했을 때 거기에 있는 주인도 쓸 수 있다.

 

@JoinColumn(name = "OWNER_ID")

name에는 엔티티의 pk 컬럼명을 써줘야 함.

 


즉시로딩(EAGER) : 미리 다 로딩을 해놓기 때문에 필요한지 필요하지 않은지 모르니까 일단 다 조인해서 가져옴. 성능이 안 좋다. 실무에서 사용금지!

 

지연로딩(LAZY) : 내가 필요할 때 다시 쿼리문이 나가는 것.

로딩을 fetch라는 옵션으로 줄 수 있다.

지연로딩 : 기존의 엔티티를 상속받은 proxy객체가 들어가 있음. proxy에는 id값만 들어가 있고 나머지 컬럼은 null임.

즉시로딩 : 처음에 싹다 join하고 select하기 때문에 원본객체가 들어가 있음.

 

지연로딩 : 프록시는 항상 id 값을 가지고 있고, 다른 컬럼이 필요하다면 쿼리가 나가면서 null이었던 게 값이 들어가면서 사용할 수 있다.

 

 

 

 

* @ToString(exclude = "")

양방향일 때 무한루프에 빠질 수 있음. 연관관계 객체는 제외시켜야 함.

필드 위에 @ToString.Exclude 를 써줘도 된다.

 

 

FK있는 곳에서 쓰기

//편의메소드

 

 

 


CarOwnerRepository.java

같은 메소드를 다른 방식으로 쓰기(쿼리메소드, jpql)

 

 

CarOwnerRepositoryTest.java

//on delete cascade 사용x

 

'2022 > jpa' 카테고리의 다른 글

day06[jpa, mybatis 연동]  (0) 2022.12.01
day05[다대일 양방향 관계]  (0) 2022.12.01
day04[연관관계]  (0) 2022.11.30
day04[Auditing(어디팅)]  (0) 2022.11.30
day04[임베디드, 맵드슈퍼클래스]  (0) 2022.11.30
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함