• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

AttributeConverter 관련 질문입니다!

20.03.19 01:39 작성 조회수 184

0

안녕하세요! QueryDsl 강의 엊그제 완강하였습니다~!

이제 곧 회사에서 QueryDsl 을 적용하려 하는데 정말 큰 도움이 되었습니다 감사합니다!

이번에 드릴 질문은 다름 아니라 AttributeConverter에 관한 질문입니다!

데이터베이스에 Json 타입의 필드를 AttributeConverter를 사용해 커스텀한 클래스로 받아왔을때 트랜잭션이 끝날때 더티체킹이 일어나 업데이트를 하는 이슈가 존재했습니다.

이 때 더티체킹이 일어나는 이유는 어떤 상황 때문일까요?
그리고 이 상황에서 .equals를 오버라이딩해서 더티체킹을 해제해주는 방안을 찾았는데 이 방법 외에 더 괜찮은 방법이 있을까요?
혹시 몰라 제가 참고한 링크도 남기겠습니다..!
https://medium.com/@paul.klingelhuber/hibernate-dirty-checking-with-converted-attributes-1b6d1cd27f68


그리고 하나 더 궁금한 것이 AttributeConverter의 동작이
DB에서 find할때는 convertToEntityAttribute,
DB에 flush 할때는 convertToDatabaseColumn
메소드가 실행 될 것이라 생각했는데 find만 하더라도 두 메소드를 여러번 왔다갔다 하는데 이 동작방식에 대한 궁금증이 있습니다!

항상 좋은 강의와 답변에 감사드립니다!

답변 1

답변을 작성해보세요.

1

안녕하세요. 요한님^^

도움을 드리고 싶은데, 좀 더 자세히 코드를 디테일하게 봐야 할 것 같아요. (왜 equals를 직접 구현해서 해결해야 하는지도 좀 봐야할듯요, 저는 특별히 문제없이 converter를 사용한 것 같아서요)

말씀하신 AttributeConverter에서 equals를 구현할 수 밖에 없었던 예제 코드와 그것을 실행할 수 있는 테스트 케이스를 작성해서 zipkyh@naver.com으로 보내주세요.

그리고 두번째 말씀하신 부분도 find만 해도 두 메소드를 여러번 왔다갔다 하는 케이스가 발생하는 부분도 동작하는 테스트 케이스를 포함해서 함께 메일에 보내주세요^^