October 01, 2021
데브코스 W8D5 강의 수강
JPA 미션3 과제
entityManager.remove(엔티티) 시 엔티티는 null값이지만, 1차 캐시에 남아있다.flush()를 하게 될 때 스냅샷과 비교해서 DB에 반영하게 되는 것 같다.(DELETE 쿼리 날아감)
@DisplayName("삭제 테스트")
@Test
void testDelete() {
EntityManager entityManager = emf.createEntityManager();
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
Member member = new Member("Myunghwan", "Sam", 29, "경기 남양주", "");
String uuid = UUID.randomUUID().toString();
Order order = new Order(uuid, LocalDateTime.now(), OrderStatus.OPENED, "", member);
entityManager.persist(order);
transaction.commit();
Order orderasdf = entityManager.find(Order.class, uuid);
// DB에 남아있음. 영속성 컨텍스트에서 제거할 줄 알았지만 영속성 컨텍스트에서는 남아있고 entity 값만 제거
entityManager.remove(order);
// true -> 영속성 컨텍스트에 남아있는 것을 확인
log.info("{}", emf.getPersistenceUnitUtil().isLoaded(order));
Order searched = entityManager.find(Order.class, uuid); // -> null
log.info("2 : {}", searched);
transaction.begin();
transaction.commit();
Order foundOrder = entityManager.find(Order.class, uuid);
Member foundMember = entityManager.find(Member.class, 1L);
log.info("{}", foundOrder);
log.info("{}", foundMember);
}