# Java > Gnral Java > Persistance des donnes >  Comment bien grer les Lazy Collection ?

## ZouBi

J'utilise des JPA dans une application qui comprennent des champs en mode FETCH LAZY.
Or ces JPA seront utiliss  travers des remotes bean mais dans ce cas,  travers le web, les JPA seront dtachs de l'EntityManager qui feront qu' distance, je ne pourrai rcuprer les Lazy Collections.
Quelle est la meilleure faon de grer a?
Crer deux mthodes distinctes dans mon EJB? Une permettant de recevoir une instance JPA sans les collections charges, et une avec les collections?

----------


## DevServlet

> J'utilise des JPA dans une application qui comprennent des champs en mode FETCH LAZY.
> Or ces JPA seront utiliss  travers des remotes bean mais dans ce cas,  travers le web, les JPA seront dtachs de l'EntityManager qui feront qu' distance, je ne pourrai rcuprer les Lazy Collections.
> Quelle est la meilleure faon de grer a?
> Crer deux mthodes distinctes dans mon EJB? Une permettant de recevoir une instance JPA sans les collections charges, et une avec les collections?


Techniquement tu ne peux pas sur la mme entit et la mme colonne dfinir 2 politiques diffrentes de mapping. Et pour moi y'a mme pas besoin, le LAZY ne prcharge simplement pas la collection, mais lors de l'invocation du get sur cet collection, je crois que hibernate va la chercher en base. donc ton LAZY suffit.

----------


## fr1man

A priori oui, tu vas etre oblig de prcharger tes collections, si tu veux que ton objet disant puisse y accder.
Par dfaut je laisse les collections en lazy, et je fais des mthodes permettant de charger les collections dont j'ai besoin.

----------


## ZouBi

Merci.
J'ai sinon trouv une mthode (de feignante) pour Hibernate.
Dans le fichier persistence.xml, si on ajoute la ligne : 


```
<property name="hibernate.enable_lazy_load_no_trans" value="true"/>
```

Cela permet d'accder aux attributs Lazy meme s'ils sont dtachs de l'EntityManager. Bref, a fonctionne bien. 

J'ai une question un peu hors-sujet mais je ne trouve l'information nulle part.
Lorsque Hibernate instancie une Entity, passe-t-il par les setters? ou directement par les attributs?
De meme lorsqu'il met  jour l'entity dans la base de donnes, passe-t-il par les getters?

----------


## fr1man

Je ne suis pas convaincu par l'utilisation de cette proprit, aprs  toi de voir.

----------


## DevServlet

> J'ai une question un peu hors-sujet mais je ne trouve l'information nulle part.
> Lorsque Hibernate instancie une Entity, passe-t-il par les setters? ou directement par les attributs?
> De meme lorsqu'il met  jour l'entity dans la base de donnes, passe-t-il par les getters?


Bonjour, tout dpend du paramtrage hibernate que tu fais sur l'attribut "access", selon sa valeur hibernate passera pas l'attribut directement ou ses accesseurs. c'est expliqu ici.

----------


## ZouBi

fr1man, pourquoi?

DevServlet, merci.


```
access (optionnel - par défaut = property) : La stratégie qu'Hibernate doit utiliser pour accéder à la propriété.
```

Par dfaut, il passe donc bien par les setters.

----------


## fr1man

Voila ce que j'ai trouv :



> Note: this may happen outside of the transaction and is not safe. Use with caution.


https://hibernate.onjira.com/browse/HHH-7457

----------

