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

Développement Web en Java Discussion :

Spring - JPA - CommandLineRunner et @transactionnel


Sujet :

Développement Web en Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    juillet 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 104
    Points : 77
    Points
    77
    Par défaut Spring - JPA - CommandLineRunner et @transactionnel
    Bonjour,

    Pourquoi lorsque je lance avec CommandLineRunner, une requête sur une entité associée à une autre en mode LAZY, je dois utiliser @transactionnel et non lorsque j'utilise un controller ?

    Est ce que l'objet session d'hibernate n'est jamais fermé lorsque le server web est en marche ?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur en génie logiciel
    Inscrit en
    juin 2012
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur en génie logiciel
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : juin 2012
    Messages : 630
    Points : 1 603
    Points
    1 603
    Par défaut
    tes requêtes sont des select, delete, update, insert?
    tu passes par un Entity manager dans ton CommandLineRunner
    tu ne mentionnes pas si tu utilises spring boot...

    mais si oui dans ton application.properties faut mettre

    //session ouverte dans la vue
    spring.jpa.open-in-view=false

    //https://vladmihalcea.com/the-hibernate-enable_lazy_load_no_trans-anti-pattern/
    spring.jpa.properties.hibernate.enable_lazy_load_no_trans=false

    tu peux mettres ces valeurs à true... mais c'est une très mauvais pratique

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    juillet 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 104
    Points : 77
    Points
    77
    Par défaut
    C'est plus une question général pour comprendre qu'un problème que je rencontre.

    Je suppose que je n'ai pas besoin de transactions avec des Select, mais dans mon cas, c'est Hibernate avec Spring data qui gère la construction de la requête donc j'ai tendance à mettre des transactions partout.

    Si je passe par un entity manager, il faut gérer la session soit même il me semble ? je n'ai jamais essayé, j'utilisation l'annotation @Transactional qui je crois utilise un proxy pour ajouter l'ouverture et la fermeture de session autour de la méthode.

    spring.jpa.open-in-view est par defaut à true il me semble.

    Je vais regarder sur ces deux propriétés, je suppose j'aurai mes réponses.

    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 11/05/2009, 15h51
  2. [Framework] Configuration Tomcat + Jsf + IceFaces + Spring/JPA/Hibernat
    Par yannlejunter dans le forum Spring
    Réponses: 9
    Dernier message: 07/05/2009, 17h19
  3. [Data] integration spring jpa toplink jboss
    Par jpclavery dans le forum Spring
    Réponses: 1
    Dernier message: 23/04/2008, 12h41
  4. [Data] Spring + JPA (hibernate) + Tomcat
    Par balteo dans le forum Spring
    Réponses: 1
    Dernier message: 19/11/2007, 12h06
  5. Struts + Spring + JPA
    Par Superdub dans le forum Struts 1
    Réponses: 1
    Dernier message: 16/10/2007, 10h04

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