340 votes

Pourquoi JPA dispose-t-il d'une annotation @Transient ?

Java dispose de la transient mot-clé. Pourquoi JPA a-t-il @Transient au lieu d'utiliser simplement le mot-clé java qui existe déjà ?

6voto

Llama Points 194

En termes simples, si vous utilisez l'annotation @Transient sur un attribut d'une entité, cet attribut sera isolé et ne sera pas sauvegardé dans la base de données. Les autres attributs de l'objet au sein de l'entité seront toujours sauvegardés.

example:

J'enregistre l'objet dans la base de données à l'aide de la méthode d'enregistrement intégrée au référentiel jpa :

userRoleJoinRepository.save(user2);

4voto

Paulo Merson Points 611

Para Kotlin n'oubliez pas que les développeurs Java transient devient le mot-clé intégré de Kotlin @Transient annotation. Par conséquent, assurez-vous d'avoir l'importation JPA si vous utilisez JPA @Transient dans votre entité :

import javax.persistence.Transient

1voto

Dima R. Points 105

Je vais tenter de répondre à la question du "pourquoi". Imaginez une situation où vous avez une énorme base de données avec beaucoup de colonnes dans une table, et votre projet/système utilise des outils pour générer des entités à partir de la base de données. (Hibernate dispose de ces outils, etc...). Supposons maintenant que votre logique d'entreprise exige qu'un champ particulier ne soit PAS persisté. Vous devez "configurer" votre entité d'une manière particulière. Alors que le mot-clé Transient fonctionne sur un objet - comme il se comporte dans un langage Java, le mot-clé @Transient n'est conçu que pour répondre aux tâches qui concernent uniquement les tâches de persistance.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X