Hibernate

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.

Introducció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:

  1. 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.
  2. 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.
  3. 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.

Certifícate en Hibernate con CertiDevs PLUS

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

Hibernate
Código

Configuración con JPA

Hibernate
Test

Tipos de datos personalizados

Hibernate
Puzzle

Consultas Criteria avanzadas

Hibernate
Código

Operaciones en cascada

Hibernate
Test

Anotaciones JPA

Hibernate
Puzzle

Asociación Many To One

Hibernate
Test

Funciones en consultas JPQL

Hibernate
Código

Asociación Many To Many entre Actor y Pelicula

Hibernate
Código

Asociación One To Many entre Curso y Estudiante

Hibernate
Código

Tipos de datos básicos

Hibernate
Test

Consultas Criteria básicas

Hibernate
Código

Asociación Many To Many

Hibernate
Puzzle

CRUD de entidades con asociaciones

Hibernate
Proyecto

Optimización de asociaciones con carga lazy

Hibernate
Código

Asociación One To Many

Hibernate
Puzzle

Configuración con Maven

Hibernate
Test

Asociación One To One

Hibernate
Test

CRUD en Hibernate

Hibernate
Código

Operaciones en cascada

Hibernate
Puzzle

Introducción a Hibernate

Hibernate
Test

Atributos de tipo enum en entidades JPA

Hibernate
Código

Carga de asociaciones en consultas con EntityGraph

Hibernate
Código

Configuración con Gradle

Hibernate
Test

Asociación One To One entre Libro y Resumen

Hibernate
Código

Asociación One To Many

Hibernate
Test

Asociación Many To Many

Hibernate
Test

Creación de entidades

Hibernate
Test

Ciclo de vida de una entidad

Hibernate
Código

Consultas JPQL básicas

Hibernate
Código

Carga de asociaciones en consultas con EntityGraph y anotaciones

Hibernate
Código

Tipos de datos embebidos

Hibernate
Código

Asociación Many To One entre Paciente y Clinica

Hibernate
Código

Asociación Many To One

Hibernate
Puzzle

Optimización de consultas con DTOs

Hibernate
Código

Atributos @Transient en entidades

Hibernate
Código

Asociación One To One

Hibernate
Puzzle

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

Hibernate

Introducción Y Entorno

Configuración Hibernate Con Gradle

Hibernate

Introducción Y Entorno

Configuración Hibernate Con Maven

Hibernate

Introducción Y Entorno

Configuración Hibernate Con Jpa

Hibernate

Introducción Y Entorno

Creación De Entidades Jpa

Hibernate

Entidades Jpa Y Tipos De Datos

Tipos De Datos En Hibernate

Hibernate

Entidades Jpa Y Tipos De Datos

Atributos @Transient En Entidades

Hibernate

Entidades Jpa Y Tipos De Datos

Enums En Hibernate

Hibernate

Entidades Jpa Y Tipos De Datos

Tipos De Datos Embebidos

Hibernate

Entidades Jpa Y Tipos De Datos

Crud En Hibernate

Hibernate

Entidades Jpa Y Tipos De Datos

Ciclo De Vida De Una Entidad

Hibernate

Entidades Jpa Y Tipos De Datos

Asociación One To One

Hibernate

Asociaciones Entre Entidades

Asociación One To Many

Hibernate

Asociaciones Entre Entidades

Asociación Many To One

Hibernate

Asociaciones Entre Entidades

Asociación Many To Many

Hibernate

Asociaciones Entre Entidades

Operaciones En Cascada

Hibernate

Asociaciones Entre Entidades

Consultas Jpql Básicas

Hibernate

Consultas Hql Y Jpql

Consultas Jpql Avanzadas

Hibernate

Consultas Hql Y Jpql

Funciones En Consultas Jpql

Hibernate

Consultas Hql Y Jpql

Consultas Criteria Básicas

Hibernate

Api Criteria De Jpa

Consultas Criteria Avanzadas

Hibernate

Api Criteria De Jpa

Carga De Asociaciones En Consultas Con Entitygraph

Hibernate

Api Entitygraph

Carga De Asociaciones En Consultas Con Entitygraph Y Anotaciones

Hibernate

Api Entitygraph

Optimización De Consultas Con Dtos

Hibernate

Optimización

Optimización De Asociaciones Con Carga Lazy

Hibernate

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.