작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
257
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를 구현할 수 밖에 없었던 예제 코드와 그것을 실행할 수 있는 테스트 케이스를 작성해서 전체 프로젝트를 압축해서 올려주세요.
그리고 두번째 말씀하신 부분도 find만 해도 두 메소드를 여러번 왔다갔다 하는 케이스가 발생하는 부분도 동작하는 테스트 케이스를 포함해서 함께 올려주세요.