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

Hibernate Java Discussion :

Problème avec getHibernateTemplate().save


Sujet :

Hibernate Java

  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 19
    Par défaut Problème avec getHibernateTemplate().save
    Bonjour tout le monde,

    Dans une application web, utilisant Struts 2, Spring et Hibernate, j’essaye d’insérer des enregistrements dans une base MySQL. Pour ce faire, j’utilise getHibernateTemplate().save. Le problème c’est que quand j’enregistre un élément et que je liste le contenu de la table ça apparaît pendant une exécution mais je ne trouve rien au niveau de la base, et il suffit de rafraîchir la liste pour que ça n'apparaisse pas. A votre avis, qu’est ce qui peut en être la cause ?
    Voici quelques bouts de 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
    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
    80
    81
    82
    83
    84
    85
    86
    87
     
    CREATE TABLE `compEval`.`Domaine` (
      `idDomaine` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
      `libelleDomaine` VARCHAR(254),
      `description` VARCHAR(254),
      PRIMARY KEY (`idDomaine`)
    )
    ENGINE = InnoDB;
     
    Voici le fichier de mapping :
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="com.toto.compEval.CompEval.Model">
        <class name="Domaine" table="Domaine" catalog="compEval">
            <id name="idDomaine" type="java.lang.Integer">
                <column name="idDomaine" />
                <generator class="identity" />
            </id>
            <property name="libelleDomaine" type="string">
                <column name="libelleDomaine" length="254" />
            </property>
            <property name="description" type="string">
                <column name="description" length="254" />
            </property>       
        </class>
    </hibernate-mapping>
     
    Voici la méthode du DAO :
     
     
    public class DomaineDao extends AbstractDAO implements IDomaineDao {	
     
    	private static final Log log = LogFactory.getLog(DomaineDao.class);
     
    	private final SessionFactory sessionFactory = getSessionFactory();
     
    	public void persist(Domaine transientInstance) {
    		log.debug("persisting Domaine instance");
    		try {
    			getHibernateTemplate().save(transientInstance);
    			log.debug("persist successful");
    		} catch (RuntimeException re) {
    			log.error("persist failed", re);
    			throw re;
    		}
    	}
     
    Voici la méthode l’appelant dans la couche service :
     
    public void saveDomaine(Domaine monDomaine)throws BusinessException{
    		try{
    		getDaoFactory().getDomaineDAO().persist(monDomaine);		
    		}
    		catch (DAOException e) {
    			throw new BusinessException(e.getMessage());
    		}
    	}
     
    Finalement, voici le fichier de la gestion des transactions :   
     
    	<!-- - - - - - - - - - -     Transaction manager    - - - - - - - - - -->
    	<bean id="transactionManager"
    		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    		<property name="sessionFactory">
    			<ref bean="sessionFactory" />
    		</property>
    	</bean>
     
    	<tx:advice id="txAdvice" transaction-manager="transactionManager">
    		<tx:attributes>
    		<tx:method name="get*" read-only="true"/>
    		<tx:method name="save*" rollback-for="Exception"
    				propagation="REQUIRED" />
    		<tx:method name="update*" rollback-for="Exception"
    				propagation="REQUIRED" />
    		</tx:attributes>
    	</tx:advice>
     
    	<aop:config proxy-target-class="true">
    		<aop:pointcut id="compEvalServiceMethods"
    			expression="within(*com.toto.compEval.CompEval.Services.*Service.*)" />
    		<aop:advisor advice-ref="txAdvice"
    			pointcut-ref="compEvalServiceMethods" />
    	</aop:config>
    </beans>
    Merci d'avance !

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    vu le comportement (visible pendant l'exécution, invisible en base et invisible après), je dirais que t'as oublié de faire le commit de ta transaction d'où un rollback par défaut.

  3. #3
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 9
    Par défaut java.lang.NullPointerException
    Bonjour,
    désolée de s’infiltrer de cette façon, mais c'est tellement urgent !!!!

    en fait, je suis débutante avec spring mvc, et j'utilise en parallèle hibernate, maven et mysql. après avoir lu beaucoup de documentation je me suis mise à faire un petit exemple.

    j'ai une classe Reglages, interface ReglagesDAO, son implémentation ReglagesDaoImpl, une classe ReglagesService, RegalgesControleur + la configuration du web.xml (DispatcherServlet), reglagesServlet.xml (bean ViewResolver), applicationContext.xml pour les beans (sessionFactory, DataSource, Transaction, ....) et enfin mes pages jsp (index, reglages et result).

    j'ai arrivé à afficher la page index qui contient un lien vers une autre page contenant un champs (textArea) où je pouvais écrire et un boutton pour la sauvegarde en base de données. (en utilisant les contrôleurs, @RequestMapping ...).

    Mon problème est qu'en cliquant sur bouton envoyer j'obtiens l'exception java.lang.NullPointerException, et j'avais bien compris que ça concernait l'initialisation de la session factory (sachant que j'utilise hibernateTemplate, HibernateDaoSupport). Mais pour la résoudre je sais pas trop quoi faire .


    Je vous remercie d'avance.

Discussions similaires

  1. [Framework] Problème avec getHibernateTemplate()
    Par windowsfashion dans le forum Spring
    Réponses: 2
    Dernier message: 19/09/2010, 21h21
  2. Problème avec "save as" de Win32
    Par Hoopsy dans le forum Modules
    Réponses: 3
    Dernier message: 16/10/2009, 09h07
  3. Problème avec FileReference.save
    Par Dayren dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 11/12/2008, 15h08
  4. [Embedded function] Problème avec la fonction SAVE
    Par bassemb dans le forum Simulink
    Réponses: 4
    Dernier message: 23/04/2008, 17h24
  5. [Data] Problème avec getHibernateTemplate().iterate()
    Par KneXtasY dans le forum Spring
    Réponses: 2
    Dernier message: 25/06/2007, 15h33

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