IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Java Discussion :

Jersey + Hibernate. Comment éviter le lazy loading ?


Sujet :

Services Web Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Jersey + Hibernate. Comment éviter le lazy loading ?
    Bonjour,

    J'ai mis en place un projet WebService avec Spring Hibernate et Jersey.
    J'aurai besoin de votre aide pour optimiser le code.
    Voici le contexte simplifié. J'ai une classe Collaborateur qui possède une liste de niveau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    @Entity
    @Table (name = "collaborateur")
    @XmlRootElement(name = "collaborateur")
    @XmlAccessorType(XmlAccessType.PROPERTY)
    @SequenceGenerator(name = "collaborateur_id_seq", sequenceName = "collaborateur_id_seq")
    public class Collaborateur implements Serializable {
    private Integer id;
    private List<Niveau> niveaux;
            @Id
    	@GeneratedValue(generator = "collaborateur_id_seq", strategy = GenerationType.SEQUENCE)
    	public Integer getId() {
    		return id;
    	}
    	public void setId(Integer id) {
    		this.id = id;
    	}
           @OneToMany (targetEntity=Niveau.class, mappedBy="collaborateur", fetch= FetchType.LAZY)
    	@Cascade(CascadeType.ALL)
    	public List<Niveau> getNiveaux() {
    		return niveaux;
    	}
    	public void setNiveaux(List<Niveau> niveaux) {
    		this.niveaux = niveaux;
    	}
    Comme vous pouvez le constater la liste de niveau est en FetchType.LAZY.
    Dans les DAO se trouvent deux méthodes : l'une remonte les collaborateurs sans les niveaux et l'autre avec les niveaux.

    Le problème est que lorsque j'appelle la méthode qui ne remonte pas les niveaux, Jersey transforme les collaborateurs en XML puis il tente d'accéder à la liste de niveaux, ce qui impliquent une erreur de lazy loading.

    La solution de mettre un FetchType.EAGER me convient moyennement.
    Est-il possible d'ajouter dynamiquement l'annotation XMLTransient lorsque l'on le souhaite ?
    Auriez vous une solution alternative ?

    Merci par avance.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Juillet 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 26
    Points : 25
    Points
    25
    Par défaut
    voire avec l'annotation @xmlTransien pour l'attribue que tu veut pas qu'il passe en appelant cet objet

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/07/2007, 10h21
  2. Spring hibernate lazy loading
    Par mauroyb0 dans le forum Hibernate
    Réponses: 6
    Dernier message: 09/05/2007, 12h14
  3. Lazy loading et fermeture de session hibernate
    Par BRAUKRIS dans le forum Hibernate
    Réponses: 3
    Dernier message: 20/07/2006, 13h08
  4. [hibernate] problème pour desactiver le lazy loading
    Par agougeon dans le forum Hibernate
    Réponses: 2
    Dernier message: 14/03/2006, 11h20
  5. [HIBERNATE 3]Lazy loading
    Par SEMPERE Benjamin dans le forum Hibernate
    Réponses: 11
    Dernier message: 08/02/2006, 22h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo