엔티티를 조회할 때, em.find()를 통해서 조회하게 되는데 위에 사진 처럼 1차 캐시에 없으면 DB에서 조회하여 1차 캐시에 저장하게 된다.
영속성 컨텍스트에 대해서 공부하다가 em.persist(entity)는 데이터베이스에 저장되는게 아니라 영속성 컨텍스트에 반영된다는게 이해가 잘 되지 않아서 코드를 통해서 이해하는게 더 빨랐다.
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin(); // 트랜잭션 시작
Member member = new Member();
member.setName("이순신");
em.persist(member); // 영속성 컨텍스트에 등록 (SQL 실행 X)
tx.commit(); // 여기서 flush()가 발생하고, INSERT SQL 실행
✅ persist() → 영속성 컨텍스트에 저장됨 (DB 반영 X)
✅ commit() → flush() 후 DB에 반영됨
✅ flush() → 변경 내용을 DB에 즉시 반영하지만, 트랜잭션은 유지됨
즉, persist()는 데이터베이스가 아니라 영속성 컨텍스트에 먼저 반영되는 것을 확인할 수 있다! 🚀