web-dev-qa-db-fra.com

Mappage de la vue SQL sur l'entité JPA

Dans mon projet de développement, j'utilise JPA (hibernate) en tant que OR technologie de mappage pour l'accès à la base de données. Je rencontre parfois des problèmes de performances et des difficultés techniques lorsque je mappe la table de base de données directement à des entités pour une relation complexe. 

Je trouve une solution de contournement consiste à mapper la vue de base de données aux entités JPA. Cela facilite le codage et parfois, les performances sont meilleures. Pensez-vous que c'est un anti-modèle d'utilisation de JPA de cette manière?

18
Boris

Ce n'est pas une solution de contournement ni un anti-motif. Il existe un sujet sur mappage des entités JPA sur des vues SQL . Il vous donne suffisamment d’informations sur l’utilisation de cette méthode ou non.

Personnellement, je préfère les classes Java et j'utilise donc Result Classes Constructor Expression . Il instancie et remplit les objets de la classe fournie en fonction du retour de la requête de résultats.

Vous pouvez afficher ces deux méthodes, ce qui augmente les performances et réduit la complexité de la structure.

12
JMelnik

J'ai eu un problème avec le lien que JMelnik a gentiment fourni: J'ai créé la requête complexe sous forme de vue dans Javadb, puis j'ai essayé de faire glisser la vue sur le formulaire, mais Netbeans ne me permettait pas de la supprimer (par conséquent, je pouvais ne pas créer automatiquement la table liée. J'ai vu sur ce lien que je ne suis pas le seul à avoir vécu cela.

Solution qui a fonctionné pour moi: 

Créer une vue dans la base de données, pour votre SQL complexe avec jointures

"Créer une entité à partir d'une base de données" dans le paquetage d'entités et nommez-la xxxViewName

  • Assurez-vous qu'un champ de l'entité est identifié comme clé en ajoutant "@Id" au-dessus.

Créer une requête de persistance Java dans le navigateur: 

  • Assurez-vous que la conception de formulaire est visible, puis cliquez avec le bouton droit de la souris sur "Autres composants" dans le navigateur, puis choisissez Ajouter depuis la palette> Java Persistence> Requête.

  • Configurez la requête: N'utilisez PAS l'habituel "show xxxViewName" (qui échoue car JPA ne prend pas en charge show). Utilisez Select w from xxxViewName w "

Créer une liste de résultats de persistance Java dans le navigateur:

  • Semblable à la création de la requête. Assurez-vous de définir les paramètres de type de la liste sur 

Liez votre JTable à la liste.

0
student