Atributos volátiles con @Transient

Tutorial de JPA persistence.xmlLa anotación @Transient se utiliza para indicarle a JPA que un atributo de una Entidad no debe de ser persistente, de esta manera, JPA pasa por alto el atributo y no es tomado en cuenta a la hora de persistir el Objeto.

En la práctica no es común utilizar esta anotación, debido a que las Entidades por lo general solo tiene los atributos que mapean con la base de datos. Sin embargo, existen ocasiones en donde puede ser útil. Un ejemplo muy habitual es cuando agregamos un logger a la clase entidad. Esta instancia de java.util.logging.Logger será una propiedad más de la entidad, pero no deseamos que sea persistente, para lo cual lo marcamos con @Transient. Retomaremos la Entidad Employee que hemos utilizado en todo este tutorial para analizar cómo quedaría:

 

Como vemos en la entidad Employee, marcamos la propiedad logger como @Transiente, de esta manera, este atributo será ignorado por JPA. Si ejecutamos el programa veremos que no se creara una columna para esta propiedad.

 

La anotación @Transient no tiene atributos, por lo que con solo agregarla JPA sabrá que debe ignorar el campo.

 

NOTA: Este artículo es solo una sección del Tutorial de JPA, para ver el contenido completo de este tutorial regresa al Índice en el botón de abajo.

AnteriorÍndiceSiguiente

Artículos relacionados

Mapeo de fechas con @Temporal Mediante la anotación @Temporal es posible mapear las fechas con la base de datos de una forma simple. Una de las principales complicaciones cuando t...
Definir llave primaría con @Id Al igual que en las tablas, las entidades también requieren un identificador( ), dicho identificador deberá de diferenciar a la entidad del resto. Com...
Entity Manager & Persistence Context Hasta el momento solo hemos trabajado con el Entity Manager para realizar las operaciones básicas, pero existen detalles más finos que es necesario en...

Oscar Blancarte

Ideológico, Innovador y emprendedor, Padre, Tecnólogo y Autor, amante de la ciencia y la tecnología en todos sus colores y sabores. Arquitecto de software & Full Stack Developer con experiencia en la industria del desarrollo de software y la consultoría. Amante de la programación y el Ajedrez.

2 comentarios en “Atributos volátiles con @Transient

  1. Hola Oscar, primero reconocerle el gran trabajo que estas haciendo en este blog.

    Un compañero me ha hecho una pregunta a raíz de leer su tutorial de JPA. Quería hacer una pregunata:

    ¿Cual crees que es el comportamiento a la hora de hacer un persist, merge si la entidad tiene atributos que no son @Transient pero tampoco están mapeados a una columna?

    Saludos

    1. Gracias por el comentario y que bueno que el material aquí expuesto es de tu agrado 🙂

      Con respecto a tu pregunta. JPA mapeara de forma automática todo los campos no anotados (@), sin embargo, el mapeo dependerá del tipo de datos, por ejemplo, lo datos primitivos o clases wraper será automaticamente mepeadas como una columna a la misma tabla de la Entidad y el tipo de datos de la columna dependerá del tipo de dato la propiedad, por ejemplo VARCHAR para los Strings, Numbers para los Integer, Floats y Dubles y TIMESTAMP para los Data y Calendar, (el nombre de la columna será el mismo que la propiedad). Por otra parte, si la propiedad es de tipo de otra Entidad, entonces asumirá una relación ManyToOne y si la propiedad es una Colección (Collection) creará una relación OneToMany.

      Ahora bien, el comportamiento puede variar ligeramente según la implementación de JPA, por lo que nunca se recomienda asumir el comportamiento y definir siempre todas las anotaciones necesarias para garantizar el correcto funcionamiento sin importar la implementación de JPA.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *