우와한 개발자

[Java] record 클래스와 Lombok 라이브러리

by 우와한개발자

DTO(Data Transfer Object)

  • 순수하게 데이터를 담아 계층 간으로 전달하는 객체
  • 다른 로직을 갖지 않고 생성자와 getter, equals(), hashcode()

 

VO(Value Object)

  • 값 자체로 의미를 가지는 객체
  • 식별자(ID)가 없음
  • equals()와 hashCode()로 값 비교

 

[ record 클래스 ]

public record Employee(
	int id, String name, double salary
){
	
	// 컴팩트 생성자
	public Employee{
		if(id<=0) throw new IllegalArgumentException("id 음수 불가");
	}
}
  • 데이터를 담기 위한 불변(Immutable) 클래스
  • Java 16 부터 도입
  • 모든 필드는 private final
  • 생성자, hashCode()와 equals(), toString(), getter 자동 생성
  • record는 getName() 같은 getter가 아니라 접근자(accessor) name()을 생성
  • 기본적으로 java.lang.Record 클래스를 상속받아 다른 클래스 상속 불가
  • 컴팩트 생성자 compact constructor : 필드 검증(Validation)이나 값 보정(Normalization) 을 위해 사용

 

[ Lombok 라이브러리]

  • 어노테이션 기반으로 코드를 자동완성 해주는 라이브러리
  • 자바 프로그래밍에서 반복적인 코드 작성을 줄여주는 유용한 라이브러리.

1. lombok 설정 : sts 이클립스 설정 및 프로젝트 설정

1) 이클립스에 롬복 설정

//.init 파일과 lombok.jar가 같은 디렉토리에 있는 경우
// 공백 없이!
// -javaagent는-vmargs 보다 아래!
=javaagent:lombok.jar

// 절대경로 써도 됨.

 

2) 프로젝트에 롬복 적용

  • 프로젝트/lib 폴더 생성 후 다운로드 받은 lombok.jar파일 드래그
  • Build Path 설정(그래야 사용 가능)
  • 프로젝트 우클릭 → Build Path → Configure Build Path → Libraries의 Classpath → Add JARs → 프로젝트/lib 폴더내 추가한 lombok.jar 선택
  • 이클립스 재시작

 

2. lombok 사용 및 주요 어노테이션

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class User {
    private String name;
    private int age;
}
어노테이션 설명
@Getter, @Setter getter/setter 자동 생성
@ToString toString() 메서드 자동 생성
@EqualsAndHashCode equals()와 hashCode() 메서드 자동 생성
@NoArgsConstructor 매개변수가 없는 기본 생성자 자동 생성
@AllArgsConstructor 모든 필드를 매개변수로 가지는 생성자 자동 생성
@RequiredArgsConstructor final 필드와 @NonNull 필드만 매개변수로 가지는 생성자 자동 생성
@Builder 빌더 패턴을 사용할 수 있도록 Builder 클래스 자동 생성
@Data @Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor 기능 포함
@Slf4j SLF4J Logger 객체(log) 자동 생성

블로그의 정보

우와한개발자 님의 블로그

우와한개발자

활동하기