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 :

Hibernate 4 et SessionFactory


Sujet :

Hibernate Java

  1. #21
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut
    Merci pour ton conseil Romain, tu as tout à fait raison.
    Je me rends compte que d'une part pour bénéficier des bibliothèques de test pour Spring il faut rajouter les dépendances Maven.
    Par ailleurs un minimun de compréhension du fonctionnement de Spring est nécessaire bien que mon DAO est déclaré en tant que Bean dans mon applicationContext.xml.
    Quant à Hibernate n'en parlons pas bien que j'utilise sa spécification JPA plus particulièrement.

  2. #22
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut
    [Résolu]
    J'ai remodelé mon code car il y avait du "cafouillage". Voici ce que cela donne

    1°) Dans mon applicationContextTest.xml, j'ai ceci :
    Code xml : 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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:p="http://www.springframework.org/schema/p"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd	 
    	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
     
    	<!-- DAO -->
    	<bean id="daoTache" class="fr.acais.tacheapp.dao.impl.DAOTacheImpl" >
    		<property name="dataSource" ref="dataSource"/>
    	</bean>	
     
    	<!-- CONNECTION -->
    	<bean id="dataSource" destroy-method="close"
    		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    		<property name="driverClassName" value="org.postgresql.Driver" />
    		<property name="url" value="jdbc:postgresql://127.0.0.1:5432/tacheapp" />
    		<property name="username" value="${jdbc.username}" />
    		<property name="password" value="${jdbc.password}" />
    	</bean>
     
    </beans>
    Je fais bien référence à ma dataSource que je voudrais récupérer plus tard

    2°) dans l'implémentation de mon interface :
    Code Java : 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
     
    public class DAOTacheImpl implements DAOTache {	
     
    	private DataSource dataSource;
     
    	/**
             * @return the dataSource
             */
    	public DataSource getDataSource() {
    		return dataSource;
    	}
     
    	/**
             * @param dataSource the dataSource to set
             */
    	public void setDataSource(DataSource dataSource) {
    		this.dataSource = dataSource;
    	}
    public void createEntityTache(TacheEntity tache) throws SQLException {
    		// On ouvre une session
    		Session s = HibernateUtil.openSession();
    		// On démarre la transaction
    		Transaction t = s.beginTransaction();
    		// On sauvegarde la tâche en Base de données
    		s.save(tache);
    		// On commit la transaction
    		t.commit();
    		// On ferme la session
    		s.close();		
    	}
     
    }

    Je passe le code contenant l'entité TacheEntity contenant les annotations Hibernate, le fichier de mapping hibernate.cfg.xml, ainsi que la classe HibernateUtil pour gérer la sessionFactory car tous ces derniers sont corrects.

    La classe de Test :
    Code Java : 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
     
    public class DAOTacheTest {
    	private final static Logger logger = LogManager.getLogger(DAOTacheTest.class.getName());	
     
    	DAOTache daoTache; // @see applicationContextTest.xml
     
    	@Before
    	public void setUpTest() {
    		BeanFactory beanFactory = new ClassPathXmlApplicationContext("applicationContextTest.xml");
    		daoTache = (DAOTache)beanFactory.getBean("daoTache");
    	}
     
    	@Test
    	public void testCreateEntity() throws SQLException{		
     
    		// Ajouter un nouvel objet Tache
    		TacheEntity maTache = new TacheEntity();
    		maTache.setDescription("maquatrièmeTache");
    		maTache.setDateDeCreation(new Date());			
     
    		// Appeler la méthode createEntity() avec le nouvel objet Tache crée		
    		daoTache.createEntityTache(maTache);		
    		logger.info("La tâche a été ajoutée avec succès !");
     
    		// on vérifie l'assertion
    		Assert.assertNotNull(maTache.getIdTache()); 
    		Assert.assertNotNull(maTache.getDescription());
     
    	}

    Vous remarquerez qu'avant de lancer le test je crée une nouvel instance de mon beanFactory pour récupérer mon applicationContextTest.xml puis je récupère mon bean daoTache.

    Merci encore pour votre aide.
    Transact.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Data] hibernate et multiple sessionFactory
    Par bgerin dans le forum Spring
    Réponses: 2
    Dernier message: 13/02/2010, 12h01
  2. [Data] [Hibernate] Initialisation de la "sessionFactory"
    Par FreshVic dans le forum Spring
    Réponses: 1
    Dernier message: 02/10/2008, 11h47
  3. Réponses: 8
    Dernier message: 17/04/2008, 17h29
  4. Hibernate pb SessionFactory
    Par dominou73 dans le forum Hibernate
    Réponses: 8
    Dernier message: 17/08/2007, 12h17
  5. [Hibernate] probleme de SessionFactory
    Par Elmilouse dans le forum Hibernate
    Réponses: 2
    Dernier message: 11/04/2006, 16h52

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