ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스프링 TMI. 영속성컨텍스트에서 준영속상태가 누적된다면?
    프로그래밍/Spring 2023. 11. 15. 15:37

     

    영속성컨텍스트를 복습하던 중

    이러한 의문이 들었다 .

     

    준영속상태에서 merge를 할 경우 복사된 데이터가 반환된다.

    그러면 기존의 데이터는 어떻게 되는가?

     

     

    기존 준영속 상태의 엔티티

    이 엔티티는 여전히 준영속상태를 유지하며,

    새로운 영속성 컨텍스트에는 속하지 않는다.

     

    새로운 영속 상태의 엔티티

    merge 메소드의 반환값으로 들어온 엔티티.

     

     

     

     

    그렇다면 이러한 merge가 계속 반복되면

    준영속상태의 엔티티가 쌓일텐데

    데이터의 누적으로 인한 문제가 생기지 않게 하려면

    저데이터들을 지워줘야하는게 아닐까?  

    어떻게 지우지?

     

     

     

    사고의 흐름

     em.close를 해서 영속성컨텍스트를 닫아버리면 지워지나?

    실행결과 close를 해도 지워지지 않았다.

     

     

     

    하지만 나의 궁금증은 쓸모없는 궁금증이었다.

     

    요약해서 말하자면

    준영속상태의 데이터를 삭제하거나 관리하는 것은 필요하지 않다.

    그 이유로  이것들은 어차피 엔티티로 남아있으며, 엔티티의 상태가 비영속, 영속, 준영속으로 바뀌는 것일 뿐이기 때문이다.

    또한 영속성 컨텍스트의 유지 기간이 길어져서 준영속 데이터가 많이 쌓이더라도 가비지 컬렉터가 이를 치워줄 것이기 때문에  혹시 모를 상황에 대비하여 주의를 기울이는 정도면 충분하다.

     

    만약 엄청나게 많은 대용량데이터를 처리한다고 하면 준영속상태의 데이터 누적으로 인한 문제가 발생할 수는 있겠으나,

    그런 처리를 하는 경우엔 스프링을 쓰지 않기 때문에 결과적으로는 괜한 걱정이라고 할 수 있다.

     

     

     

     

    관련 키워드

    수직확장

    수평확장

     

    두개가 있다

     

    수직확장은 하나의 램으로 최적화를 하는 등의 관리를 열심히 하는 것이고

    수평확장은 서버를 늘려버리는 것이라고 보면 된다.     

     

     

     

     

    쓸모없는 궁금증이었지만  나처럼 MBTI가  N인 사람이 궁금해 할수도 있으니 기록으로 남긴다.

    '프로그래밍 > Spring' 카테고리의 다른 글

    [MVC] Model은 어디로 갔을까?  (0) 2023.11.22
    스프링 입문 + 웹  (0) 2023.11.08
Designed by Tistory.