영상 후기 - 잉, 페퍼의Spring Data JPA 삽질일지

parkkhee·2023년 3월 30일
0

  • 영속성 컨텍스트는 영속, 비영속, 준영속으로 나눌수 있다.
  • 삭제 엔티티란 뭘까? 영속성된 객체를 삭제하면 조회는 하지만 그 객체 값을 불러오지 않는다. (그래서 딱히 조회 쿼리 발생이 안됨.) == ID값이 있고, 영속성 컨텍스트와 연결은 되어 있다.
  • 영속성 컨텍스트 문제상황1
    deleteAll()을 해서 DB에서 findAll로 DB정보 다 영속성컨텍스트 1차캐시속에 넣는다. 그런 뒤 1차캐시 이용헤서 해당 아이디들 쓰기 지연 SQL 저장소에 delete 쿼리문들 등록한다.
    그 후 saveAll() 실행하는데 1차 캐시에 없어서 DB로 insert 날리는데 id 유니크 걸려 있어서 insert 가 안된다.
    쓰기 지연 SQL 저장소는 커밋될때 DB로 flush()발동한다.
  • 문제해결 방법 세가지
  1. 강제로 flush한다. test 아니면 잘 사용안한다.
  2. JPQL사용. flush 되고 JPQL이 나간다.
  3. 여러개의 트랜잭션으로 나누고 먼저 커밋하는 방법.
profile
순우리말 백엔드 개발자

0개의 댓글