Spring) Immutable을 경험하다.

CokeBear·2022년 8월 26일
0

spring

목록 보기
10/15

상황

  • 위와같이 일일근태를 간결히 보여주는 테이블을 만들고 있었다.

문제

  • union으로 간단히 해결될 거라 생각했던것과 달리 데이터가 생각대로 나오지 않았다.
  • 결국 DB에서는 union으로 해당 되는 데이터를 다 끌고와서 비즈니스 로직에서 처리하기로 하였다.
  • 처리하는 과정 중 UnsupportedOperationException : A TupleBackedMap cannot be modified.

    위 같은 에러가 발생하였다.

원인 찾기

  • 해당오류를 검색해보아도 중국인 사이트 밖에 나오지 않았다.
    번역의 힘을 빌린 결과 List로 생성시 불변리스트로 생성되기 때문에 ArrayList를 새로 생성하라는 내용으로 확인하였다.

  • 위 결과를 바탕으로 변경가능한 arrayList를 새로 생성한 후 넣어주는 방식으로 진행 하였으나 실패

  • 다시 원점으로 돌아가 무엇이 문제인지 삽질의 결과 List가 아닌 리스트 안에 있는 객체가 불변객체였다.

  • jpa영속성 관련 인줄 알고 또 헛다리 짚을뻔 했으나 해당 원인임을 확인하였다.

해결

  • 원인을 알았으니 해결은 금방이다. 깊은 복사를 통해 객체를 새로 할당해 주었다.
  • 성능상 이슈가 있을 수 있지만 하루 한번 배치작업하는 정도로 사용되는 Api였기 때문에 크게 신경 쓰지 않았다.
profile
back end developer

0개의 댓글