영속성컨텍스트 2

@Transient 어노테이션에 대한 이해

📌 들어가며 이번 포스팅에서는 @Transient 어노테이션이 무엇인지, 그리고 그 쓰임에 대하여 정리하고자 합니다. 새롭게 합류한 도메인팀의 스프링부트 로직에서 @Transient 가 다수 발견되어 정리하게 되었습니다. 📌 @Transient 란 @Transient는 엔티티 객체의 데이터와 테이블의 컬럼(column)과 매핑하고 있는 관계를 제외하기 위해 사용합니다. 주로 보안정보나 굳이 테이블에 저장할 필요는 없지만 도메인 로직 또는 비즈니스 로직상 계산을 위해 필요한 경우 해당 어노테이션을 활용합니다. 더 정확히 표현하면 JPA의 가장 큰 특징 중 하나인 영속성 컨텍스트 대상에서 제외시키기 위하여 사용됩니다. 또한 JPA 의 컬럼 매핑 레퍼런스 어노테이션은 Field, Property 방식을 지원하..

BackEnd/JPA 2023.04.20

JPA의 Dirty Checking이란?

Jpa를 활용하여 백엔드 개발을 하다보면 'JPA 영속성 컨텍스트' 혹은 '더티 체킹'이란 말을 종종 들을 수 있습니다. 실제로 얼마전에 회사에서 코드리뷰를 진행하는데 어떤 팀원 분께서 다음과 같이 말씀하셨다. 제가 알기로 JPA는 더티 체킹이라는 걸 해서 변경사항을 감지해 자동으로 update를 해주는 걸로 알고 있는데 왜 한번 더 save를 해줬나요? 이유가 있어요? 그 때 나는 물론 명확하게 답변을 드리지 못했다... 아..? 네..! 그러면 한번 더 save 하지 않고 트랜잭션을 마무리 하도록 하겠습니다. 라고 대충 얼버무렸던 기억이.... 그래서 오늘은 이 Dirty Checking 이라는 것의 개념을 한번 짚고 넘어가려고 합니다. 다음에는 명확히 답변드릴 수 있도록...! 예를 들어 다음과 같..

BackEnd/JPA 2022.11.05