TIL_026 | JPA와 불변성

묘한묘랑·2024년 1월 9일
0

TIL

목록 보기
26/31

오늘은 프로젝트를 진행하던 도중 문뜩 든 생각에 대하여 이야기 해보려 한다.

불변성

kotlin을 보면 불변성을 매우 중요하게 여기고 있다고 생각이 들어, 그렇다면 jpa의 entity도 불변성을 지켜야 되지 않을까? 라는 생각으로 시작이 되었다.

지키면 어떤 것이 좋냐를 생각했을 때 val로 선언함으로써 데이터에 직접 접근하여 수정하는 것을 막을 수 있다는 이점이 발생하여 코드상에서의 실수를 막을 수 있다고 판단되었다.

그런데 만약 이것을 지키게 된다면 entity를 새롭게 생성하고 id값만 이미 가져온 entity에서 가져와야 하는데 이렇게 되면 save할때 query가 하나 더 발생되어 select, select, update로 3번이나 발생하는데 이럼에도 불구하고 불변성을 지켜야 할까? 라는 생각이 들었다.

그래서 불변성을 어디까지 지켜야 되나 라는 주제를 가지고 튜터님에게 질문을 하였다.

그런데 jpa에 대한 새로운 정보를 알게 되었다.
결국 id를 가져오기 위해서 proxy상태인 entity의 id를 조회하는 과정에서 더 많은 쿼리문이 전송될 수도 있다는 답변이었다.

우선 이 답변을 듣게 된 이유는 이미 가져온 entity에서 data class의 copy를 직접 만들어 사용하는 과정에서 proxy상태에 대한 설명이 필요했기 때문이라고 이해하고 있다.

결국 jpa가 제공해주는 기능을 위해서는 일부는 수용해야 된다는 이야기를 듣게 되었다.
그래서 entity의 불변성을 지키기 보다는 가변적으로 가져가는 것이 더 좋다는 결론이 나게 되었다.

사실 그냥 포기하기에는 아쉽다고 생각이 들어 일단 proxy상태에 관하여 더 알아보고, 튜터님도 추론이라 말씀하셔서 현재 프로젝트가 끝나거나, 주말에 시간이 난다면 한번 테스트를 진행해보려 한다.

profile
상황에 맞는 기술을 떠올리고 사용할 수 있는 개발자가 되고 싶은 개발자

0개의 댓글