Maison > Java > javaDidacticiel > Comment puis-je mapper les propriétés calculées dans JPA et Hibernate à l'aide de @Formula ?

Comment puis-je mapper les propriétés calculées dans JPA et Hibernate à l'aide de @Formula ?

Mary-Kate Olsen
Libérer: 2024-12-02 11:59:13
original
851 Les gens l'ont consulté

How Can I Map Calculated Properties in JPA and Hibernate Using @Formula?

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;
Copier après la connexion

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;
Copier après la connexion

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 :

  • [Propriétés dérivées d'Hibernate - Performances et Portabilité](https://vladmihalcea.com/hibernate-derived-properties-performance-portability/)
  • [Documentation Hibernate Core : Section 5.1.22. Éléments de colonne et de formule](https://docs.jboss.org/hibernate/core/5.6/manual/en-US/html/ch05.html#d0e1830)
  • [Documentation des annotations Hibernate : Section 2.4. 3.1. Formule](https://docs.jboss.org/hibernate/orm/6.1/javadocs/org/hibernate/annotations/Formula.html)

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal