Un Record , no es más que un tipo de clase que almacena datos. Es la misma idea de construcción similar a un JavaBean , tiene constructor, atributos y métodos de acceso. Sin embargo, en lugar de permitir cualquier cambio, la clase es inmutable. También tiene los métodos equals , hashCode y toString ().
Algunas buenas ventajas a tener en cuenta al usar registros :
Imagina que tienes una clase Usercon nombre y contraseña como atributos. Esta implementación sería necesaria:
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();
Entre varias posibilidades usando registros , una utilidad sería serializar y deserializar clases que representan cargas útiles de comunicación, también llamadas DTO .
Al probar Jackson en la versión 2.13.0 , ahora es posible usar el recurso sin ninguna configuración específica.
@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^"));
}
Hay posibilidades de utilizar registros en otros escenarios, tales como:
Cuando realiza una solicitud a facebook.com, su computadora busca el nombre de dominio para traducir ese nombre de dominio en una dirección IP para que su computadora pueda hacer esa conexión.
Introducción Apache Kafka es una plataforma de transmisión distribuida de código abierto que maneja la transmisión de datos en tiempo real tolerante a fallas, de alto rendimiento y a gran escala. El sistema se basa en un modelo de publicación-suscripción en el que los productores publican mensajes sobre temas y los consumidores se suscriben a esos temas para consumir los mensajes.
Me llama la atención De repente, como ocurre con tanta frecuencia Es el punto medio de nuevo <No, no el del Pacífico, tú, el del carnaval> Todos los titulares en voz alta...
En el mundo interconectado de hoy, la amenaza de los ataques cibernéticos es más frecuente que nunca. Los ciberdelincuentes y los actores del estado-nación buscan constantemente explotar las vulnerabilidades y robar datos valiosos, lo que representa un riesgo significativo para las organizaciones de todos los tamaños.
En el panorama empresarial en rápida evolución actual, el concepto de trabajo híbrido y remoto ha ganado un impulso sin precedentes. A medida que las empresas continúan adaptándose a las necesidades y expectativas cambiantes de sus empleados, expertos de varios campos se han reunido para analizar los beneficios, los desafíos y el futuro de esta forma transformadora de trabajar.