Comments (1)
버그는 equals()
, hashcode()
안에서 각 클래스 필드들을 비교하기 위해 접근할 떄, 직접 접근(direct field access)을 했기 때문이다.
jpa 엔티티는 그대로 인스턴스로 만들어 사용하는게 아니라, jpa 구현체 - spring data jpa 에서는 하이버네이트 - 에 의해 프록시 인스턴스로 만들어진다.
때문에 직접 접근을 하면 프록시가 되기 전, 후 인스턴스의 차이로 equals
, hashcode
가 제대로 각 필드를 참조하지 못할 수 있다.
하지만 getter 와 같이 메소드를 이용해 필드에 접근하면 프록시 인스턴스가 된 이후에도 명확하게 각 필드에 접근할 수 있기 때문에
entity 안의 quals
, hashcode
를 구현할 때는 getter를 사용해야 한다.
이를 정리한 기술 블로그가 여럿 있는데, 그 중 유명한 jpa buddy 플러그인을 만드는 회사의 블로그 글을 첨부하니 공부에 참고할 것.
내용이 많은데 getter method
로 검색하면 원하는 문서 부분을 좀 더 빨리 찾을 수 있다.
from fastcampus-project-board.
Related Issues (20)
- [고도화] 댓글 기능 고도화 - 1차 대댓글: 쿼리 업데이트
- [고도화] 댓글 기능 고도화 - 1차 대댓글: 기능 수정
- [고도화] 댓글 기능 고도화 - 1차 대댓글: 뷰 수정
- [리팩토링] 테스트코드 리팩토링
- [리팩토링] AuditingFields 의 잘못 표현된 부분 개선
- [리팩토링] 강의 중 잘못 작성된 소스코드 정리
- [고도화] 민감 정보의 환경변수 치환 후 테스트 실패 현상 수정
- 게시글 (페이지네이션 + 정렬) 로직 버그 HOT 1
- API 호출이 가능하도록 인증 설정 변경하기
- Data REST API 설정 검토하기
- 테스트용 계정 추가하기
- ERD 문서의 오류 수정
- [고도화] 추가 요소 - 깃헙 CI 기능 활성화하기
- ch01 04 -> 05, ch02 09 -> 10 강의 관련 문의사항 HOT 3
- [고도화] 엔티티 코드 리팩토링 - `equals()`, `hashcode()`에서 필드 접근을 getter로 바꾸기
- [고도화] 리팩토링 - 엔티티 코드 스타일 정리
- [리팩토링] 소스코드 중간 정리
- [리팩토링] deprecated된 댓글 업데이트 기능 삭제
- 게시글 네비게이션의 로직 버그 수정: 중간 글을 삭제할 경우 이전 글, 다음 글을 선택할 수 없는 문제
- [고도화] 댓글 기능 고도화 - 1차 대댓글: 도메인 업데이트
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fastcampus-project-board.