티스토리 뷰
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 |