DB1 - JDBC 개발 조회 강의 관련 질문
380
작성한 질문수 35
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
jdbc 개발-조회 강의에서 MemberRepositoryV0Test 에서 findById 에서 isEqualTo()에서 결과가 참인 이유가 롬복의 @Data 가 equals()를 오버라이딩해서라고 하셨는데 롬복의 @Data 를 만약 안쓰면 isEqualTo() 값이 false가 되나요??
@Data 안 써도 isEqualTo() 자체가 자바의 equals() 랑 비슷해서 참이 되어야 하는거 아닌가요??
답변 1
0
안녕하세요. 황지호님, 공식 서포터즈 y2gcoder입니다.
jdbc 개발-조회 강의에서 MemberRepositoryV0Test 에서 findById 에서 isEqualTo()에서 결과가 참인 이유가 롬복의 @Data 가 equals()를 오버라이딩해서라고 하셨는데 롬복의 @Data 를 만약 안쓰면 isEqualTo() 값이 false가 되나요??
=> 네 맞습니다. 먼저 오버라이딩해줬다는 것이 그냥 equals()를 그대로 다시 썼다는 것이 아닙니다. 보통 오버라이딩의 목적은 원래 구현과 다르게 사용하기 위해서 말그대로 재정의 해주는 것입니다. equals()는 재정의하지 않을 때는 Object의 equals()를 그대로 사용합니다. 그리고 Object의 equals는 객체의 reference 값을 비교해서 두 객체가 동일한지 판단합니다. 그런데 @Data를 쓰면(정확히는 @EqualsAndHashCode를 사용하면) 기본적으로 롬복이 equals()를 객체의 모든 필드값끼리 비교하는 것으로 재정의하게 됩니다. 예를 들어 기존에는 객체의 참조값이 다르면 두 객체를 동일하지 않다고 판단했다면, @Data를 붙인 클래스를 객체로 만들어 equals()로 비교하면 두 객체가 가진 필드들을 비교하면서 두 객체가 가진 필드들이 동일하면 동등한 것으로 판단하여 true를 반환하도록 재정의한다는 것입니다. 이 부분에 대해서는 자바 equals(), 동일성, 동등성 과 같은 키워드로 공부해보시길 추천합니다.
@Data 안 써도 isEqualTo() 자체가 자바의 equals() 랑 비슷해서 참이 되어야 하는거 아닌가요??
=>@Data는 @Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode 를 한꺼번에 달아주는 것과 같은 효과를 냅니다. 그 중에서 @EqualsAndHashCode 가 equals()를 재정의해주게 됩니다. 그러니 @Getter, @Setter, @RequiredArgsConstructor, @ToString 만 달고 @Data를 지우신 후 직접 테스트해서 결과를 보시는 것이 더 직관적이라 생각합니다. isEqualTo()라는 메서드는 정확하게는 해당 객체의 equals()를 이용해서 판단하는 것입니다.
감사합니다.
spring initialiser 어떤걸 선택해야될지 모르겠어요
0
38
2
트랜잭션 템플릿이 체크예외는 커밋하는 이유가 궁금합니다.
0
51
1
jdbc 학습하다 궁금해서 질문드려요
0
84
1
정상이체와 이체중 예외발생 차이
0
70
2
이번 강의부터가 JDBC 직접 사용 맞나요?
0
89
1
순수한 서비스 계층에 대한 의문???
0
83
2
3_4test, 4test 자동 리소스 안됨
0
59
2
데이터베이스 선택 관련 질문.
0
70
2
after 메서드 사용 유무
0
59
2
데이터베이스 접근 및 DB 락
0
57
1
@SpingBootTest, @TestConfiguration
0
57
1
Read Committed 격리 수준 사용 관련 질문
0
50
1
AopCheck Test 부분의 EnhancerBySpring 확인 법??
0
69
2
커리큘럼 관련 질문
0
78
1
서비서 계층 스프링 프레임워크 사용
0
89
1
validation(toMember)의 위치
0
84
2
데이터 계층에서 서비스 로직의 datasource를 인식하는 방법
0
166
2
member 상수 질문
0
124
2
ctrl + F6 이후로 con 인식이 안 됩니다
0
154
2
DrivenManager 와 Connection 반환에 대한 질문입니다!
0
110
1
섹션5 트랜잭션 템플릿관련 질문(이기종 DB)
0
116
1
세션1 테이블 조회결과 그림은 Redo 로그에 속하나요?
0
103
1
트랜잭션이 필요하지 않은 경우 DB 대신 파일 시스템을 사용하는 것이 더 효율적인가?
0
98
1
강의 14분쯤 Exception 질문
0
116
2





