Mappage des propriétés calculées avec JPA et Hibernate : un guide
De nombreux beans Java ont des propriétés qui ne sont pas explicitement représentées dans les tables de base de données. Ces propriétés peuvent être des valeurs calculées, telles que le nombre d'entités enfants associées à une entité parent.
Traditionnellement, ces propriétés ont été définies à l'aide de HQL ou de l'API Criteria. Cependant, l'annotation @Formula dans Hibernate offre une approche plus efficace et déclarative.
Utilisation de l'annotation @Formula
L'annotation @Formula vous permet de spécifier un fragment SQL qui calcule la valeur d'une propriété :
@Formula("PRICE*1.155") private float finalPrice;
Dans cet exemple, la propriété finalPrice est calculée en multipliant le Colonne PRIX par 1,155.
Requêtes complexes et tables dérivées
@Formula peut également gérer des requêtes complexes impliquant plusieurs tables :
@Formula("(select min(o.creation_date) from Orders o where o.customer_id = id)") private Date firstOrderDate;
Le premierOrderDate La propriété est définie en récupérant la date de création minimale de la table Commandes pour les clients ayant le même identifiant que l'actuel. entité.
Considérations sur les performances et la portabilité
Il est important de noter que @Formula utilise SQL pour calculer les valeurs, ce qui peut avoir un impact sur les performances en cas d'utilisation excessive. De plus, la syntaxe SQL utilisée dans les annotations @Formula peut ne pas être portable entre différents fournisseurs de bases de données.
Pour plus d'informations, reportez-vous aux ressources suivantes :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!