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 :

Spring + JPA (hibernate) + Tomcat


Sujet :

Spring Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 68
    Points : 46
    Points
    46
    Par défaut Spring + JPA (hibernate) + Tomcat
    Bonjour,

    Voici mon environment:
    -Tomcat 6
    -Spring wef flow + JSF
    -JPA + Hibernate
    -Spring RC1
    -@Transactional annotation


    Voici mon code.
    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
     
     
           <bean id="controleAdministrationSondages" class="com.jbmlf.ControleAdministrationSondages" scope="singleton">
                <property name="controleAdministrationSondagesDAO" ref="controleAdministrationSondagesDAO"/>
            </bean>
     
            <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
                <property name="persistenceUnitName" value="jbmlfPU"/>
                <property name="jpaVendorAdapter">
                    <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                        <property name="showSql" value="true" />
                        <property name="databasePlatform" value="org.hibernate.dialect.MySQLInnoDBDialect"/>
                    </bean>
                </property>
            </bean>
     
            <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
                <property name="entityManagerFactory" ref="entityManagerFactory"/>
            </bean>
     
            <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
     
            <bean id="controleAdministrationSondagesDAO" class="com.jbmlf.ControleAdministrationSondagesDAO" scope="singleton">
                <property name="entityManagerFactory" ref="entityManagerFactory"/>
            </bean>
     
            <tx:annotation-driven transaction-manager="transactionManager"/>
    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
     
     @Transactional
        public class ControleAdministrationSondagesDAO {
     
           private EntityManagerFactory entityManagerFactory;
     
            @PersistenceUnit
            public void setEntityManagerFactory(EntityManagerFactory entityManagerFactory) {
                System.out.println("I am set!!");
                System.out.println("I am (arg): "+ entityManagerFactory);
                this.entityManagerFactory = entityManagerFactory;
                System.out.println("I am (instance variable set to): "+ this.entityManagerFactory);
            }
     
     
            public void save(Sondage sondage) {
                if(getEntityManagerFactory() == null) System.out.println("emf is null");
                 System.out.println("I am: "+ entityManagerFactory);
                EntityManager em = getEntityManagerFactory().createEntityManager();
                if(em == null) System.out.println("em is null");
                em.persist(sondage);
            }
     
            public EntityManagerFactory getEntityManagerFactory() {
                return entityManagerFactory;
            }
        }
    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
     
     @Transactional(propagation = Propagation.REQUIRES_NEW)
            public void creerSondage(Sondage sondage) {
                System.out.println("creerSondage");
     
                Sondage s = new Sondage(1);
                s.setDateCreation(new Date());
                s.setDateDebut(new Date());
                s.setDetailQuestion("How old R U?");
                s.setIdentifiantAdministrateur(new Administrateur(1));
                s.setIsQuestionMultiple(2);
                s.setNomSondage("Age Poll");
     
                List<Reponsepossible> rps = new ArrayList<Reponsepossible>();
                Reponsepossible rp1 = new Reponsepossible(1);
                rp1.setIdentifiantSondage(s);
                rp1.setDetailReponse("18-30");
                Reponsepossible rp2 = new Reponsepossible(2);
                rp2.setIdentifiantSondage(s);
                rp2.setDetailReponse("30-50");
                rps.add(rp1);
                rps.add(rp2);
     
     
                s.setReponsepossibleCollection(rps);
     
     
                controleAdministrationSondagesDAO.save(s);
                //em.persist(s);
     
     
                System.out.println("Fin creer sondage");
            }
    Ca ne commit pas!!

    Quelqu'un a t il une idée?

    Merci d'avance,

    Julien.

  2. #2
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour.

    Dans ton DAO, tu as mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void save(Sondage sondage) {
                if(getEntityManagerFactory() == null) System.out.println("emf is null");
                 System.out.println("I am: "+ entityManagerFactory);
                EntityManager em = getEntityManagerFactory().createEntityManager();
                if(em == null) System.out.println("em is null");
                em.persist(sondage);
            }
    Là, tu crées à la main le EntityManager.
    Normalement, tu devrais laisser Spring le faire en faisant ceci:
    - Enlever le champ PersistenceManagerFactory du DAO
    - Ajouter un champ de type EntityManager dans le DAO.
    - L'annoter avec @PersistenceContext.

    Ensuite, tu utilises directement le champ de type EntityManager pour persister tes entités.

    Bonne chance.

    P.S.: Du momeent que tu utilises Spring 2 (2.5 RC1), pourquoi ne pas en profiter pour utiliser la syntaxe réduite avec le namespace p ?

Discussions similaires

  1. Configuration datasource Spring + jpa + hibernate
    Par lapin_hobbit dans le forum Spring
    Réponses: 0
    Dernier message: 20/02/2014, 11h35
  2. Projet Spring MCV, Hibernate, Tomcat, ExtJS sous NetBeans
    Par 6su7 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 26/04/2013, 14h12
  3. Réponses: 0
    Dernier message: 07/04/2013, 20h28
  4. [Data] Configuration Spring / JPA / Hibernate
    Par franchouze dans le forum Spring
    Réponses: 0
    Dernier message: 10/11/2009, 15h45
  5. Réponses: 12
    Dernier message: 11/05/2009, 14h51

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