@DataJpaTest 를 사용 시 Test data 가 영속성 컨텍스트에 남아있지 않도록 만들기
2023. 5. 5. 20:50
JPA
수정해야 하는 부분 -> TransactionEntityManager 사용은 '트랜잭션 분리' 는 아니고, 영속성 컨테스트 상태를 분리한 것 정도로 생각할 수 있다. 동일한 Test manged transaction 내에서 그저 영속성 컨텍스트를 비우기 위해 em.flush() 및 em.clear() 를 하는 것이기 때문 Intro JPA 강의를 들은지 굉장히 오래되었고.. 부끄럽지만 확실하지 않은 상태에서 코드를 작성했는데, 이로 인해 쿼리를 제대로 예상하지 못한 일이 발생했다. 생각했던데로 쿼리가 나가고 있긴 했지만 이를 확인하기 전에는 다른 분의 질문에 (매우매우 매우매우 기본적인 개념이었음에도..)“아마..맞을걸요?” 라는 대답을 하고 있었다 ㅠ-ㅠ. 거기에 더불어 쿼리를 확인하겠다고 작성한 테스..
[JPA]EntityManager merge와 persist
2022. 5. 10. 15:28
JPA
JPA 강의 듣고 공부하면서 velog 에 썻던 글이길래 티스토리에 복붙 + 그 때는 사실 그래서 이 차이가 어떤 결과를 낳는데? 라고 생각하며 사실상 글 번역 정도였었어서 몇가지를 더 추가했다. 무려 12년 전 글이다. - JPA EntityManager: Why use persist() over merge()? 상황 JpaRepository를 extend하는 UserRepsoitory interface를 생성하였다. 해당 repository를 사용하여 save 하면, 기존에 존재하던 object의 경우, 데이터를 update하고, 새로운 것일 경우 insert하는 것을 확인했다. SimpleJpaRepository.class 라는 클래스를 살펴보면, save() method에서는 em.persist(..