스프링부트의 정석 집필 - 10(하이버네이트 영속화 어려움)

jaegeunsong97·2023년 7월 19일
0

SpringBoot-Book

목록 보기
10/13

  • 먼저 JDBC를 사용했을 때는 자바-DB 이렇게 데이터 주고받았다
  • 하이버네이트의 등장으로 자바-하이버네이트-DB 이런 구조가 만들어졌다.
  • 하이버네이트의 역할은 자바언어로 우리가 주면 하이버네이트 알아서 뚝딱!해서 원하는 정보를 DB에서 가져온후 ORM을 해서 준다
  • 이때 하이버네이트의 내부 동작원리를 알려면 영속화를 알아야한다.
  • 먼저 객체상태는 4가지가 있다.
    • 순수객체
      • PK 없음
    • 비영속객체
      • PK 있음 or PK 없음
    • 영속객체
      • PK 있음
    • 준영속객체
      • 영속객체에서 detach()한것
  • 순수객체를 persist()를 하면 영속객체가 된다.
  • 영속된 객체는 persistance context라는 곳에 들어가 있다.
  • 이때 save() 즉, 순수객체를 persist()를 하면, 영속성컨텍스트에 들어가게 되고 자동으로 flush()가 된다.
  • 요순간 query문이 console에 찍힌다. 그리고 DB 테이블에 저장되고 바로 레코드와 영속성 컨텍스트는 동기화가 된다.

영속화에 대해서 정리를 하는 도중, 생각보다 정리가 되지 않는 것 같아서 따로 적어 두려고 한다. 특히 merge()부분이 아직 이해가 되지 않은 것 같다.

강사님께서는 최종적으로는

  • PK 존재 X : persis()
  • PK 존재 O :
    • 동일 : update()
    • 비동일 : insert()

이렇게 이해하면 된다고 하셨는데 아직 내가 멍청하다!!! ㅎㅅㅎ

모르면 공부해야지 암, 모르면 죄임 죄

상남자 노래 : https://www.youtube.com/watch?v=AWECMaScS9s

profile
현재 블로그 : https://jasonsong97.tistory.com/

0개의 댓글