Utilisation des enregistrements en Java

Photo de Namroud Gorguis sur Unsplash

Un Record , n'est rien de plus qu'un type de classe qui stocke des données. C'est la même idée de construction similaire à un JavaBean , il a un constructeur, des attributs et des méthodes d'accès. Cependant, au lieu de permettre tout changement, la classe est immuable. Il a également les méthodes equals , hashCode et toString ().

Quelques bons avantages à prendre en compte lors de l'utilisation d' enregistrements :

  • Diminuer l'écriture de code passe-partout
  • Supprimer le besoin de bibliothèques qui effectuent ce travail, telles que Lombok
  • Immutabilité

Imaginez que vous avez une classe Useravec le nom et le mot de passe comme attributs. Cette implémentation nécessiterait :

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();

Parmi plusieurs possibilités utilisant records , un utilitaire serait de sérialiser et de désérialiser des classes qui représentent des charges utiles de communication, également appelées DTO .

En testant Jackson dans la version 2.13.0 , il est déjà possible d'utiliser la ressource sans aucune configuration spécifique.

@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^"));
}

Il existe des possibilités d'utiliser des enregistrements dans d'autres scénarios, tels que :

  • Références d'enregistrement de base de données ou tout autre fournisseur de données : pensez, les enregistrements extraits d'une base de données peuvent être des enregistrements
  • Messages envoyés et reçus à partir d'une communication asynchrone

Références:

  • 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

Recherche d'informations sur les noms de domaine

Un extrait de Small, Sharp Software Tools par Brian P. Hogan

Recherche d'informations sur les noms de domaine

Lorsque vous faites une demande à facebook.com, votre ordinateur recherche le nom de domaine pour traduire ce nom de domaine en une adresse IP afin que votre ordinateur puisse établir cette connexion.

Configurer et utiliser Apache Kafka avec Spring Boot

Kafka avec une botte à ressort

Configurer et utiliser Apache Kafka avec Spring Boot

Introduction Apache Kafka est une plate-forme de diffusion distribuée open source qui gère la diffusion de données en temps réel à grande échelle, à haut débit et tolérante aux pannes. Le système est basé sur un modèle de publication-abonnement dans lequel les producteurs publient des messages sur des rubriques et les consommateurs s'abonnent à ces rubriques pour consommer les messages.

Related posts

Learning at Work Week compte plus que vous ne le pensez

Learning at Work Week compte plus que vous ne le pensez

Nous avons souvent du mal à mettre en œuvre ce que nous savons être bon pour nous. Qu'il s'agisse de dire à un proche que nous l'aimons ou de se rappeler de parler comme un pirate, il y aura toujours ceux qui prétendent qu'un jour, une semaine ou un mois d'événements ne sont pas nécessaires parce qu'ils font déjà ces choses.

Rassembler OSINT pour la chasse aux menaces

Rassembler OSINT pour la chasse aux menaces

Salut les cyber-amateurs ! Bienvenue à nouveau dans la série OSINT pour la chasse aux menaces. Dans le premier article, je vous ai donné un aperçu d'OSINT et de son importance dans la chasse aux menaces.

Plus de mots de passe - comment les clés d'accès remplaceront votre mot de passe

Plus de mots de passe - comment les clés d'accès remplaceront votre mot de passe

Pour éviter toute ambiguïté, les termes suivants seront utilisés ; Authentificateur ; Le téléphone mobile utilisé pour effectuer la connexion au site Web ; Le site Web ou l'application que l'utilisateur utilise pour effectuer la demande de connexion au service ; Le fournisseur fournissant le service donné, par exemple

Suivre n'importe qui avec juste un numéro de téléphone | Enquête OSINT

Suivre n'importe qui avec juste un numéro de téléphone | Enquête OSINT

Vous pouvez être un enquêteur OSINT, un joueur CTF ou simplement quelqu'un qui reçoit des appels de spam. Quelqu'un qui essaie de vérifier le numéro que vous avez vu dans une publicité.