반응형

영속성 컨텍스트 3

[JPA] 벌크 Update, Delete 연산과 영속성 컨텍스트

벌크 수정연산과 벌크 삭제연산을 각각 수행한 후에 별도로 영속성 컨텍스트 초기화 작업을 하지 않았다고 가정하자. 이후에 전체조회 작업을 시행하면 update는 연산이 적용되지 않은 영속성 컨텍스트 데이터, delete는 연산이 적용된 DB 데이터 결과가 조회되는 것을 확인할 수 있다. 왜 그런 것일까? 이를 이해하기 위해선 영속성 컨텍스트를 제대로 이해하고 있어야 한다. 아래 예시와 함께 살펴보도록 하자. Update 벌크연산 상황 영속성 컨텍스트와 DB에 아래 데이터가 있다고 하자. 위 상황에서 아래와 같이 28살 미만은 이름을 전부 비회원으로 바꾸라는 bulk update 연산을 수행해보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 @Test public void bulkUpdate..

[JPA] 양방향 연관관계에서 JPA 내부 작동 원리_영속성 컨텍스트의 이해

JPA 작동 원리를 이해하지 못해 영속성 컨텍스트의 흐름을 알지 못할 경우 발생할 수 있는 문제이다. 블로그에 따로 포스팅이 돼있지 않아서 JPA 스터디를 하는 겸 기록해보려고 한다. 들어가기 전에 스프링 환경에서 JPA ORM을 이용하고 있다. Member : Team이 N:1 양방향 연관관계를 가지고 있다. 'wooteco' 팀에 'kth990303'을 넣으려고 하는 예제를 이용할 것이다. 결론부터 말하자면? JPA의 내부 작동 흐름에 대해 이해하는 것이 정말 중요하다. (영속성 컨텍스트의 흐름에 대한 이해가 부족하면 문제 발생 확률이 높아지고, 문제 원인도 못찾을 수 있다.) 양방향 연관관계에서는 객체의 값을 INSERT할 때, 안전하게 두 객체 모두에게 반영해주자. 두 객체의 메서드를 사용하거나,..

[JPA] 영속성 컨테이너, 그리고 회원 CRUD

오랜만에 개발 공부를 하는 겸, 스프링 공부를 할까, JPA 공부를 할까, nodejs 공부를 할까 고민하던 중, 너무 오랫동안 방치해두었던 jpa 공부를 진행해보기로 했다. 인프런 김영한님의 JPA 기본편 강의를 듣고 정리한 포스팅입니다. 틀린 부분은 댓글로 피드백 부탁드립니다 :) PersistenceContext (영속성 컨텍스트)? Entity를 영구 저장해주는 환경이라 한다. 이 영속성 컨텍스트 덕분에 db를 객체지향에 좀 더 맞게 다룰 수 있게 된다고 하는데, 사실 아직까지는 정확한 느낌은 오지 않는다. 개인적으로 이 블로그가 정리를 잘해놨다고 생각해 앞으로 내가 보려고 주소를 남겨두려 한다. velog.io/@neptunes032/JPA-%EC%98%81%EC%86%8D%EC%84%B1-%E..

반응형