Entity 클래스의 id 컬럼 변수 타입을 보면 Long으로 지정하는 경우를 볼 수 있다. 왜 int, long이 아닌 Long 타입으로 사용했을까?
기본타입(primitive type) 기본 값은 0인데 만약 id에 입력 값이 없을 때 0인지, 아니면 null 값인지 구분하기 어려워 null 값을 정확하게 처리하기위해 Wrapper 클래스인 Long, Integer 등을 쓴다.
래퍼 클래스(Wrapper class)
자바의 자료형은 기본타입(primitive type)과 참조 타입(reference type)으로 나눠진다.
기본 타입은 정수, 실수, 문자, 논리 리터럴을 저장하는 타입이고 참조타입은 배열, 열거, 클래스, 인터페이스 등 객체의 위치를 참조하는 타입니다.
래퍼클래스란 8개의 기본 타입에 해당하는 데이터를 객체로 표현하기 위해 포장해주는 클래스라고 한다. 각각의 타입에 해당하는 데이터를 인수로 전달받아 해당 값을 가지는 객체로 만들어준다. 즉, 기본타입의 값을 갖는 객체라고 생각하면 된다. 래퍼 클래스는 모두 java.lang 패키지에 포함되어 제공된다.
기본타입 | 래퍼 클래스 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
박싱(Boxing)과 언박싱(UnBoxing)
- 박싱 : 기본타입의 데이터 → 래퍼 클래스의 인스턴스로 변환하는 과정
- 언박싱 : 래퍼 클래스의 인스턴스에 저장된 값 → 기본 타입의 데이터로 꺼내는 과정
JDK 1.5부터는 박싱과 언박싱이 필요한 상황에서 자바 컴파일러가 자동으로 처리해 준다.
Wrapper 클래스 사용하면 좋은점
- 데이터 타입을 Object 타입으로 변환할 수 있다.
- java.util패키지의 클래스는 객체만 처리하므로 Wrapper class는 이경우에도 도움이 된다.
- ArrayList 등과 같은 Collection Framework의 데이터 구조는 기본 타입이 아닌 객체만 저장하게 되고, Wrapper class를 사용하여 자동박싱/언박싱이 일어나낟.
- 멀티스레딩에서 동기화를 지원하려면 객체가 필요하다.
'Spring > 용어' 카테고리의 다른 글
@Transaction의 개념 (0) | 2022.06.07 |
---|---|
@Bean vs @Component (0) | 2022.06.01 |
JPA의 개념 (0) | 2022.05.22 |
Java 객체지향 (0) | 2022.05.15 |