기존 자바에서 사용되는 Vo, Dto 등을 대체하기 위해 나온 클래스이다. 

getter를 자동으로 생성되며 불변 객체인것이 특징이다. 

 

대부분 프로젝트에서 사용되는 mybatis등 기능등과 연동이 어려울것으로 보여 과연 사용될지는 .... 

개인 프로젝트에서 불변객체 사용하는 경우에는 대체해볼법 하다. 

 

Record 자세한 내용은 아래에서 참고해볼수 있다.

 

 

 

 

Java 14부터 프리뷰 기능으로 소개된 `Record`는 Java 16에서 정식으로 도입된 데이터 클래스로, 불변 객체를 더욱 쉽게 정의할 수 있도록 설계되었습니다. `Record`를 사용하면 필드 정의와 `getter`, `equals`, `hashCode`, `toString` 메서드를 자동으로 생성하여 개발자의 반복 작업을 줄여줍니다.

다음은 Java 레코드의 특징과 예제를 중심으로 블로그 글의 흐름을 구성할 수 있는 포인트들입니다:

1. Java 레코드 소개 및 필요성
- 레코드 도입 배경**: DTO, VO 같은 간단한 데이터 전달용 클래스는 필드 정의, 생성자, getter, `equals`, `hashCode`, `toString` 메서드를 반복해서 작성해야 하는 번거로움이 있습니다.
- 불변 객체 지원**: 레코드는 기본적으로 불변 객체를 생성하므로 데이터의 무결성을 보장하는 데 유리합니다.

2. 기본 사용법

  public record User(String name, int age) {}


  `record` 키워드를 통해 클래스 이름과 필드를 정의하면, Java는 자동으로 `getter`, `equals`, `hashCode`, `toString` 메서드를 생성합니다.


  User user = new User("Alice", 25);
  System.out.println(user.name()); // "Alice"
  System.out.println(user.age());  // 25




3. 레코드의 주요 특징
- 불변성: 레코드는 기본적으로 모든 필드가 `final`로 지정되어 수정할 수 없습니다.
- 명시적 생성자 추가 가능**: 필요에 따라 특정 로직을 포함한 생성자도 추가할 수 있습니다.
- 메서드 오버라이드**: `toString`, `equals`, `hashCode`는 자동 생성되지만, 필요에 따라 오버라이드할 수 있습니다.
  

  public record User(String name, int age) {
      public User {
          if (age < 0) throw new IllegalArgumentException("Age must be positive");
      }
  }



 4. 레코드의 제한 사항
- 상속 불가: 레코드는 상속이 불가하여 `final` 클래스처럼 동작합니다.
- 필드 제한: 필드는 `static` 또는 `instance`로 선언할 수 없습니다.
  
 5. 레코드와 기존 클래스 비교
- **레코드 vs. 클래스를 통한 데이터 객체**: 레코드를 사용하면 작성해야 할 코드의 양이 줄어들고 코드가 더 간결해집니다.
  
6. 레코드 활용 사례
- 데이터 전송 객체(DTO), 조회 전용 객체, 불변 VO 등 간단한 데이터 보관용 객체에 유용합니다.

 

 

'JAVA > Java Study' 카테고리의 다른 글

[동적 컴파일] 자바 동적 컴파일러  (0) 2024.12.18
[Java] 한글 자소분리  (0) 2024.11.08
[GIS] 1. Shp 파일  (1) 2024.09.06
[Java] Mvc 패턴 Model1 , Model2  (0) 2024.06.25
[Java] Virtual Thread  (0) 2024.06.05

+ Recent posts