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

Spring Java Discussion :

encore une question lazy loading spring hibernate


Sujet :

Spring Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut encore une question lazy loading spring hibernate
    Bonjour,

    Oui encore une question sur ce sujet. Désolé mais si quelqu'un pouvait me donner une explication claire à un débutant ce serait sympathique.

    Alors je me fais une petite appli de type magasin.
    voici le service :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    @Transactional
    public class StoreManagerImpl implements StoreManager  {
     
        @Autowired
        private CustomerDAO customerDao;
     
        @Autowired
        private OrderDAO orderDao;
     
        @Autowired
        private ProductDAO productDao;
     
        public void setCustomerDao(CustomerDAO customerDao) {
            this.customerDao = customerDao;
        }
     
        public void setOrderDao(OrderDAO orderDao) {
            this.orderDao = orderDao;
        }
     
        public void setProductDao(ProductDAO productDao) {
            this.productDao = productDao;
        }
     
     
     
        @Transactional(readOnly=true)
        public Product getProduct(int Id) {
            return this.productDao.getProduct(Id);
        }
     
        public void addProduct(Product p) {
            this.productDao.addProduct(p);
        }
     
        public void delProduct(Product p) {
            this.productDao.delProduct(p);
        }
     
        public void updateProduct(Product p) {
            this.productDao.updateProduct(p);
        }
     
        @Transactional(readOnly=true)
        public Customer getCustomer(int Id) {
            return this.customerDao.getCustomer(Id);
        }
     
        public void addCustomer(Customer c) {
            this.customerDao.addCustomer(c);
        }
     
        public void delCustomer(Customer c) {
            this.customerDao.delCustomer(c);
        }
     
        public void updateCustomer(Customer c) {
            this.customerDao.updateCustomer(c);
        }
     
        @Transactional(readOnly=true)
        public Order getOrder(int Id) {
            return this.orderDao.getOrder(Id);
        }
     
        public void addOrder(Order o) {
            this.orderDao.addOrder(o);
        }
     
        public void delOrder(Order o) {
            this.orderDao.delOrder(o);
        }
     
        public void updateOrder(Order o) {
            this.orderDao.updateOrder(o);
        }
     
    }

    le client :
    public class Customer extends Person implements Serializable {

    @OneToMany(mappedBy="customer")
    private Collection<Order> CommandeList = new HashSet<Order>();
    ..........................

    l'appli rempli la base et à un moment je souhaites lister la collection commande d'un client du genre
    ((Customer) StoreManagerImpl.getCustomer(1).getCommandList().size

    le hql du dao ne fait pas de join sur les objets associés.

    donc j'ai une :

    org.hibernate.LazyInitializationException: failed to lazily initialize a collection

    Même si je passe par un lazy hibernet j'aurais la même erreur car c'est en réalité à un proxy de spring que je m'adresse et celui-ci aura fermé la session.

    Donc comment faire pour lazy loader au niveau de spring ?

    Ps : Corrigez-moi si j'ai dit des énormités mais pardonnez un pauvre débutant.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Il me semble qu'hibernate renvoi en cas de lazy un proxy sur une collection mais qui n'est valable que lorsque la session hib est ouverte. et comme c'est spring qui me gère cela ca plante. Bon j'imagine que spring ne peut pas renvoyer un proxy en lieu et place du proxy hibernate.

    mais qu'est ce que je galère avec ca.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Enfin ma question pour etre plus clair , c'est comment faire ne pas utiliser différente méthode de chargement d' objet et faire que l'on passe passe par lazy loading pour accedéer au sous objet: suis je obligé de faire 2 méthodes : une qui me ramene un premier niveau du genre

    s.getCsutomer()

    et si je veux l'objet complet un

    s.getCustomerFull()

    ????????

    Je suis pourtant persuadé que si hibernate arrive à me le faire par un proxy sur la collection de sous objet, spring aussi.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Personne ne peut m'éclairer ?

Discussions similaires

  1. Encore une question sur les Sous-Forums
    Par Swoög dans le forum Evolutions du club
    Réponses: 12
    Dernier message: 27/05/2006, 02h17
  2. Encore une question sur les ListBox !!
    Par SebRs dans le forum Windows
    Réponses: 3
    Dernier message: 09/05/2006, 15h29
  3. Encore une question, pour retrouver 2 valeur d'une table
    Par danje dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/09/2005, 00h11
  4. Encore une question licence
    Par Neilos dans le forum C++Builder
    Réponses: 4
    Dernier message: 27/01/2005, 09h48
  5. Encore une question sur malloc
    Par IG88 dans le forum C
    Réponses: 5
    Dernier message: 23/06/2004, 15h35

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