Boolean
- 참조 타입 : reference type
- true, false, null 값을 가진다.
- 주로 Null 체크를 필요로할 때 참조형을 사용한다.
boolean
- 원시 타입 : primitive type
- true, false 값을 가진다.
- Null 체크가 불필요할 때 자료형(원시 타입)을 사용한다.
참조 타입과 원시 타입의 차이
자료형(원시 타입) : int, float, double, boolean, ...
참조형 : Integer, Float, Double, Boolean, ...
- 자료형을 객체로 감싼 것이 참조형이다. → Unboxing
- 원시 타입은 null 입력 가능, 제네릭 타입에서 사용 불가.
- 참조형은 null 입력 불가, 제네릭 타입에서 사용 가능.
- 원시 타입은 데이터를 stack메모리에 저장.
- 참조형은 하나의 인스턴스이기 때문에 stack메모리에는 참조값(주소값)을, 실제 값은 heap메모리에 저장.
- 메모리 → 참조 타입 >> 원시 타입
- 속도/성능 → 원시 타입 >> 참조 타입
원시타입 / 참조타입 | 원시타입 | 참조타입 |
boolean / Boolean | 1 bit | 128 bit |
byte / Byte | 8 bits | 128 bits |
short / Short | 16 bits | 128 bits |
char / Character | 16 bits | 128 bits |
int / Integer | 32 bits | 128 bits |
float / Float | 32 bits | 128 bits |
long / Long | 64 bits | 196 bits |
double / Double | 64 bits | 196 bits |
....뭐 이정도는 대충 알고 있었으나 예상치 못한 문제가 발생했습니다.
Service에서 로직을 처리하고 Controller에서 DTO를 ResponseEntity로 감싸서 return하였는데
........????
아니, 왜 변수명이 바뀌지??
isHidden = isHidden ≠ hidden
(DTO 변수명 = return시 변수명 ≠ Postman 변수명)
Service 코드 디버깅타면서 따라가다가 결국 Controller return 영역까지 따라갔습니다.
.
.
구글링 결과,
객체의 속성이 'boolean' 타입에 "is" prefix를 사용하게 될 경우
getter가 "isXXXX"로 생성된다고 합니다.
위와 같은 해결법으로,
1. 타입을 래퍼클래스 Boolean을 사용하여 getter, setter를 생성.
2. boolean 타입일 경우 getter 메서드 getIsXXXX()를 작성.
....응?
일단, Boolean으로 바꿔서 Test를 진행했습니다.
....된다....!!!
...명확한 이유는 모르겠지만 찾으면 수정하겠습니다!! (알고 계신다면 가르쳐주세요...ㅠㅠ)
끝!!
'Spring & Spring Boot' 카테고리의 다른 글
[Swagger] DTO에서 parameter 숨기기 (0) | 2023.01.16 |
---|---|
[Mybatis] Mybatis에서 inner class 사용법. (0) | 2023.01.05 |
[MyBatis] resultType 정리(feat. List<DTO>로 리턴받기) (0) | 2022.12.16 |
[springboot] 파일 다운로드 구현할 때, 메모리 잡히는 것 해결 방법!! (0) | 2022.09.14 |
MyBatis란? (0) | 2022.06.07 |