J'utilise Java Enterprise Edition avec JPA (Hibernate) pour une application client-serveur (via EJB). Le programme stocke beaucoup de données dans une base de données qui doit être transférée au client. Parce que je veux transférer moins de données que possible, je ne veux pas transférer des objets deux fois.Transférer des objets une seule fois via EJB/JPA (Hibernate)
Je veux montrer mon problème avec un petit exemple:
Base de données:
[User]
- UserID (PK)
- Name
- Adress (FK)
[Adress]
- AdressID (PK)
- Street
Sample data:
[User:1, Max, 1]
[User:2, Peter, 2]
[Adress:1, Mainstreet]
[Adress:2, Riverstreet]
Maintenant, je veux transférer une liste de tous les utilisateurs (avec le chargement désireux de Adresse) au client et aussi une liste de toutes les adresses.
création côté serveur des listes:
Userlist:
Query q = manager.createQuery("select u from UserBean m LEFT JOIN FETCH u.adress");
List<UserBean> l = (List<UserBean>) q.getResultList();
return l;
Adresslist:
Query q = manager.createQuery("select a from AdressBean m");
List<AdressBean> l = (List<AdressBean>) q.getResultList();
return l;
Lorsque le client obtient les listes que je vérifie les hashcodes de user1.getAdress().hashCode()
et adress1.hashCode()
. Le résultat est qu'il n'est pas égal de sorte que l'objet doit avoir été sauvegardé deux fois et être transféré deux fois lors de l'obtention des listes.
Est-il possible de dire (peut-être dans l'EJB) de transférer des objets une seule fois et de transférer les bonnes références? Ou puis-je améliorer mon mécanisme de transfert?
Merci beaucoup! Peter31280
quoi d'autre :) +1 –