JH 2024. 9. 12. 09:40

1. Entity: 데이터베이스 테이블

 

2. 영속성컨텍스트: @Transactional이 걸린 context(문맥)을 말함

영속성 컨텍스트 내에서 db를 한번이라도 갔다온 entity의 변경사항은 실제로 db에 반영 = '더티체킹' 이라고 부림

 

3. 쿼리메서드는 외울필요 없이 찾아서 쓰기

SQL 을 알면 좋으니 조금씩 공부하기

 

4. 연관관계


- 1:1  복잡하고 관련이 없어서 분리되어야할 때만 쓰도록! 지금은 우선 사용하지 말기 

 

- 1:N  /  N:1  유일한 연관관계이고 실제 세계에는없지만 JPA가 해줌

@OneToMany는 @ManyToOne이 없으면 존재할 수 없음

@ManyToOne은 더 많은 쪽으로 감 (ex. 게시글 < 댓글)

 

- N:M 은 @ManyToOne을 2번 쓰는것과 같음
-> 이때 중간테이블이 반드시 필요하고 ManyToOne을 중간테이블에 2번 선언하기
-> 항상 @ManyToOne 먼저 하고 @OneToMany 걸지 말지 생각하기

저자
(여러명의 저자가 책 한권 출판 가능)
중간테이블
(리스트를 필드 하나에 여러개 선언할 수 없기 때문에 중간테이블 사용)

(책 여러개가 같은 저자일 수 있음) 
@OneToMany(mappedBy = “나자신”)
private List<Author> authors = new ArrayList<>();
  • @ManyToOne(fetch = FetchType.LAZY)
  • @JoinColumn(name = “상대방id”)
    private Book book;
---------------------------------------------
  • @ManyToOne(fetch = FetchType.LAZY)
  • @JoinColumn(name = “상대방id”)
    private Author author;
@OneToMany(mappedBy = “나자신”)
private List<Book>  books = new ArrayList<>();