merci pietra
par contre je ne veux pas de lazy = false car je n'ai pas tjs besoin de charger les classes liées
plus concretement:
g un produit qui a une liste de caractéristique et qui possede un état.
g 3 fonctions:
* Produit getProduit (int numP) qui me retourne le produit sans pouvoir accéder à la liste de Caractéristique (car g mis lazy=true)
* getFicheProduit(int numP) qui me retourne le produit + la liste de carac + d'autres données (état, constructeur, notes, ...)
* Produit getCaractéristique(Produit p) qui doit se charger de repeupler le produit avec la liste de caractéristique
Le but est d'optimiser les requetes en fonction des besoins
ex:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
public dao2.Produit getProduitById(int numProduit) throws Exception {
Session session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
dao2.Produit prod = (dao2.Produit) session.get(dao2.Produit.class, numProduit);
// chargement des classes liées
prod.getEtatP();
prod.getConstructeur();
prod.getCategorie();
prod.getListCaract();
tx.commit();
HibernateUtil.closeSession();
return prod;
} |
et ca ne charge rien du tout!
d'ailleurs quel est la différence entre get et load sous Hibzernate3 ( a part la levé d'exception / retourne null)???
Ensuite quand ma couche de présentation accede au produit retourné, elle leve l'erreur de connexion close!
DOnc mes questions sont:
1- comment chargé réelement les classes liées avant de fermer la
session
2- comment peupler un objet détaché dans une autre session
==========> appliquer un filtre qui va reouvrir la session
3 - différence entre get/load
==========>load et get font la meme chose sauf que si load ne trouve pas un objet il lance une exception alors qu'avec un get il retourne un null
merci
Partager