Java에서 레코드 사용

Unsplash에서 Namroud Gorguis의 사진

기록은 더 그 데이터를 저장하는 클래스의 타입에 비해 아무것도 아니다. JavaBean 과 유사한 동일한 구성 아이디어 이며 생성자, 속성 및 접근자 메서드가 있습니다. 그러나 변경을 허용하는 대신 클래스는 변경할 수 없습니다. 또한 equals , hashCode 및 toString () 메서드가 있습니다.

레코드를 사용할 때 고려해야 할 몇 가지 장점 :

  • 상용구 코드 작성 줄이기
  • Lombok과 같이 이 작업을 수행하는 라이브러리가 필요하지 않습니다.
  • 불변성

이름과 암호를 속성으로 사용 하는 클래스가 있다고 가정 User합니다. 다음과 같은 구현이 필요합니다.

import java.util.Objects;

public class User {

    private String name;

    private String password;

    public User(String name, String password) {
        this.name = name;
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return name.equals(user.name) &&   password.equals(user.password);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, password);
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

public record User(String name, String password){}

User user = new User("admin", "45454*aa");

String name = user.name();

레코드를 사용하는 여러 가능성 중에서 한 가지 유틸리티는 DTO 라고도 하는 통신 페이로드를 나타내는 클래스를 직렬화 및 역직렬화하는 것 입니다.

버전 2.13.0 에서 Jackson을 테스트 하면 특정 구성 없이 기능을 사용할 수 있습니다.

@Test
void shouldDeserializeCorrectly() throws Exception {
    String json =
            """
                {
                    "name": "willyancaetano",
                    "password": "jK%onD2B2Pvt"
                }
            """;

    User user = objectMapper.readValue(json, User.class);
    assertEquals("willyancaetano", user.name());
    assertEquals("jK%onD2B2Pvt", user.password());

}

@Test
void shouldSerializeCorrectly() throws Exception {

    User user = new User("admin", "$JJMwSYskkN^");

    String json = objectMapper.writeValueAsString(user);

    assertTrue(json.contains("admin"));
    assertTrue(json.contains("$JJMwSYskkN^"));
}

다음과 같은 다른 시나리오에서 레코드를 사용할 수 있습니다.

  • 데이터베이스 레코드 또는 기타 데이터 제공자의 참조: 데이터베이스에서 가져온 레코드는 레코드가 될 수 있습니다.
  • 비동기 통신 송수신 메시지

참조:

  • https://docs.oracle.com/en/java/javase/14/language/records.html
  • https://www.infoq.com/br/articles/records-no-java-14/
  • https://en.wikipedia.org/wiki/Plain_old_Java_object
  • https://pt.wikipedia.org/wiki/Plain_Old_Java_Objects
  • https://www.baeldung.com/java-dto-pattern

Suggested posts

도메인 이름에 대한 정보 찾기

Brian P. Hogan의 Small, Sharp 소프트웨어 도구에서 발췌

도메인 이름에 대한 정보 찾기

facebook.com에 요청하면 컴퓨터가 도메인 이름을 조회하여 해당 도메인 이름을 IP 주소로 변환하므로 컴퓨터가 해당 연결을 만들 수 있습니다.

Spring Boot와 함께 Apache Kafka 구성 및 사용

스프링 부츠를 신은 카프카

Spring Boot와 함께 Apache Kafka 구성 및 사용

소개 Apache Kafka는 대규모, 높은 처리량, 내결함성 실시간 데이터 스트리밍을 처리하는 오픈 소스 분산 스트리밍 플랫폼입니다. 이 시스템은 생산자가 주제에 메시지를 게시하고 소비자가 해당 주제를 구독하여 메시지를 소비하는 게시-구독 모델을 기반으로 합니다.

Related posts

기독교인에 대한 박해: 우리가 말하지 않는 증오 범죄

이슬람 혐오증은 잊으십시오. 기독교인(및 유대인)은 종교적 증오 범죄의 주요 피해자입니다.

기독교인에 대한 박해: 우리가 말하지 않는 증오 범죄

이성적인 마음을 가진 사람이라면 정치계와 언론계가 좌파, 심지어 극좌파에 의해 지배되고 있다는 사실을 알고 있습니다. 종교 분야에서 이러한 불균형은 분명히 눈에 띕니다. 좌익 신문과 네트워크는 기독교 신앙을 옹호하기 위해 서두르지 않습니다.

느린 침식: 사람들이 경력을 낭비하는 방식 공개

느린 침식: 사람들이 경력을 낭비하는 방식 공개

오늘날과 같이 급변하고 경쟁이 치열한 세상에서 경력은 개인의 성장, 재정적 안정 및 전반적인 삶의 만족도에 중요한 역할을 합니다. 그러나 많은 사람들은 침체와 불만족의 끊임없는 순환에 휩싸여 직업 생활에서 점차 쇠퇴하고 있습니다.

전화번호만 있으면 누구나 추적 | OSINT 조사

전화번호만 있으면 누구나 추적 | OSINT 조사

OSINT 수사관, CTF 플레이어 또는 단순히 스팸 전화를 받는 사람일 수 있습니다. 광고에서 본 번호를 확인하려는 사람.

카우보이의 거짓말

거대 기업이 미국인에게 강력한 거짓을 판매하는 방법

카우보이의 거짓말

햇빛의 첫 번째 광선이 평원의 서리가 내린 풀을 비추는 서쪽 언덕의 눈부신 황금빛 아침입니다. 온화하고 거대한 새까만 앵거스 소 떼가 일출을 배경으로 윤곽을 그리며 다져진 길을 따라 모두가 잘 아는 지역으로 향합니다. 조식 바.