Hibernate
Tutorial Hibernate: Atributos @Transient en entidades
Hibernate transient: atributos y uso. Aprende a usar atributos transient en Hibernate mediante ejemplos prácticos y detallados.
Aprende Hibernate GRATIS y certifícateIntroducción
El atributo @Transient
en Hibernate es una anotación utilizada para indicar que una determinada propiedad o campo de una clase de entidad no debe ser persistido en la base de datos. Es decir, al utilizar esta anotación, Hibernate ignora el campo marcado al realizar operaciones de mapeo de objeto-relacional, tales como guardar, actualizar o recuperar entidades de la base de datos. Esta característica es particularmente útil cuando se quiere mantener datos en la entidad que son relevantes solo durante la ejecución de la aplicación y no necesitan ser almacenados de manera permanente.
La anotación @Transient
forma parte de la especificación de JPA (Java Persistence API), y se encuentra en el paquete jakarta.persistence
.
Ejemplo de uso
Imaginemos que tenemos una clase Empleado
que representa a los empleados en una empresa. Esta clase tiene varios campos, como id
, nombre
, apellido
y edad
, los cuales queremos que sean persistidos en la base de datos. Sin embargo, también queremos incluir un campo edadEnMeses
, que es un cálculo basado en la edad
del empleado, pero no queremos que este campo sea persistido en la base de datos.
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Transient;
@Entity
public class Empleado {
@Id
private Long id;
private String nombre;
private String apellido;
private int edad;
@Transient
private int edadEnMeses;
/* ... Constructores, getters y setters ... */
public int getEdad() {
return edad;
}
public void setEdad(int edad) {
this.edad = edad;
this.edadEnMeses = edad * 12; // Actualizamos edadEnMeses cada vez que se cambia la edad
}
public int getEdadEnMeses() {
return edadEnMeses;
}
}
En este ejemplo, el campo edadEnMeses
está marcado con la anotación @Transient
, lo que indica a Hibernate que este campo no debe ser persistido en la base de datos. Aunque edadEnMeses
es parte de la clase Empleado
y puede ser utilizado por la aplicación (por ejemplo, para mostrar la edad del empleado en meses), este valor no se guarda en la base de datos cuando se persiste una instancia de Empleado
.
Importancia
La utilización del atributo @Transient
es importante por varias razones:
- Separación de responsabilidades: Permite separar claramente los datos que son únicamente relevantes para la lógica de la aplicación de aquellos que necesitan ser persistentes.
- Optimización del uso de la base de datos: Evita la persistencia de datos innecesarios, lo cual puede ayudar a optimizar el uso de recursos de la base de datos.
- Flexibilidad en el diseño de modelos: Facilita el diseño de modelos de entidad que pueden contener tanto datos persistentes como datos transitorios sin necesidad de crear estructuras adicionales para manejar los datos no persistentes.
El uso de @Transient
es una herramienta valiosa en el desarrollo de aplicaciones que utilizan Hibernate, ya que ofrece flexibilidad y control sobre qué información se persiste y cuál se mantiene solo en el contexto de ejecución de la aplicación.
Ejercicios de esta lección Atributos @Transient en entidades
Evalúa tus conocimientos de esta lección Atributos @Transient en entidades con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Consultas JPQL avanzadas
Configuración con JPA
Tipos de datos personalizados
Consultas Criteria avanzadas
Operaciones en cascada
Anotaciones JPA
Asociación Many To One
Funciones en consultas JPQL
Asociación Many To Many entre Actor y Pelicula
Asociación One To Many entre Curso y Estudiante
Tipos de datos básicos
Consultas Criteria básicas
Asociación Many To Many
CRUD de entidades con asociaciones
Optimización de asociaciones con carga lazy
Asociación One To Many
Configuración con Maven
Asociación One To One
CRUD en Hibernate
Operaciones en cascada
Introducción a Hibernate
Atributos de tipo enum en entidades JPA
Carga de asociaciones en consultas con EntityGraph
Configuración con Gradle
Asociación One To One entre Libro y Resumen
Asociación One To Many
Asociación Many To Many
Creación de entidades
Ciclo de vida de una entidad
Consultas JPQL básicas
Carga de asociaciones en consultas con EntityGraph y anotaciones
Tipos de datos embebidos
Asociación Many To One entre Paciente y Clinica
Asociación Many To One
Optimización de consultas con DTOs
Atributos @Transient en entidades
Asociación One To One
Todas las lecciones de Hibernate
Accede a todas las lecciones de Hibernate y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A Hibernate
Introducción Y Entorno
Configuración Hibernate Con Gradle
Introducción Y Entorno
Configuración Hibernate Con Maven
Introducción Y Entorno
Configuración Hibernate Con Jpa
Introducción Y Entorno
Creación De Entidades Jpa
Entidades Jpa Y Tipos De Datos
Tipos De Datos En Hibernate
Entidades Jpa Y Tipos De Datos
Atributos @Transient En Entidades
Entidades Jpa Y Tipos De Datos
Enums En Hibernate
Entidades Jpa Y Tipos De Datos
Tipos De Datos Embebidos
Entidades Jpa Y Tipos De Datos
Crud En Hibernate
Entidades Jpa Y Tipos De Datos
Ciclo De Vida De Una Entidad
Entidades Jpa Y Tipos De Datos
Asociación One To One
Asociaciones Entre Entidades
Asociación One To Many
Asociaciones Entre Entidades
Asociación Many To One
Asociaciones Entre Entidades
Asociación Many To Many
Asociaciones Entre Entidades
Operaciones En Cascada
Asociaciones Entre Entidades
Consultas Jpql Básicas
Consultas Hql Y Jpql
Consultas Jpql Avanzadas
Consultas Hql Y Jpql
Funciones En Consultas Jpql
Consultas Hql Y Jpql
Consultas Criteria Básicas
Api Criteria De Jpa
Consultas Criteria Avanzadas
Api Criteria De Jpa
Carga De Asociaciones En Consultas Con Entitygraph
Api Entitygraph
Carga De Asociaciones En Consultas Con Entitygraph Y Anotaciones
Api Entitygraph
Optimización De Consultas Con Dtos
Optimización
Optimización De Asociaciones Con Carga Lazy
Optimización
Certificados de superación de Hibernate
Supera todos los ejercicios de programación del curso de Hibernate y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.
En esta lección
Objetivos de aprendizaje de esta lección
- Comprender el propósito y funcionamiento del atributo
@Transient
en Hibernate para excluir campos de la persistencia en la base de datos. - Reconocer la importancia de separar datos transitorios de persistentes en el diseño de modelos de entidad.
- Entender cómo la anotación
@Transient
puede optimizar el uso de recursos de la base de datos. - Familiarizarse con la práctica de incluir campos calculados en una entidad sin necesidad de persistirlos.