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 :

optimisation configuration Hibernate


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    171
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 171
    Par défaut optimisation configuration Hibernate
    Bonjour,

    Je développe un intranet avec Hibernate et Spring. J'ai suivit le tuto "Premier projet avec Tapestry5, Spring et Hibernate" (http://baptiste-meurant.developpez.c...ing-hibernate/).
    De plus, l'intranet possède une architecture en couche. Hibernate gère la couche DAO en utilisant une transaction. Spring la couche Service et DAO.

    Le souci c'est que je ne sais pas si j'utilise la meilleure méthode pour configurer mes bean. Si ma méthode est optimisée ou si je peux optimiser plus.

    Voilà mes fichiers de configuration Hibernate :

    1. applicationContextDao.xml :

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
     
    <!-- Application context DAO layer -->
     
    <beans>
     
    	<!-- General -->
    	<bean id="utilisateursDao" class="domain.dao.hibernate3.UtilisateursDaoImpl" >
    		<description>
    			définit un bean utilisateursDao correspondant à une interface et y associe l'implémentation correspondante.
    		</description>
    		<property name="sessionFactory">
    			<ref bean="sessionFactory" />
    		</property>
    	</bean>
     
    	<bean id="clientsDao" class="domain.dao.hibernate3.ClientsDaoImpl" >
    		<description>
    			définit un bean clientsDao correspondant à une interface et y associe l'implémentation correspondante.
    		</description>
    		<property name="sessionFactory">
    			<ref bean="sessionFactory" />
    		</property>
    	</bean>
     
    	<bean id="fournisseursDao" class="domain.dao.hibernate3.FournisseursDaoImpl" >
    		<description>
    			définit un bean fournisseursDao correspondant à une interface et y associe l'implémentation correspondante.
    		</description>
    		<property name="sessionFactory">
    			<ref bean="sessionFactory" />
    		</property>
    	</bean>
     
    	<bean id="contactDao" class="domain.dao.hibernate3.ContactDaoImpl" >
    		<description>
    			définit un bean contactDao correspondant à une interface et y associe l'implémentation correspondante.
    		</description>
    		<property name="sessionFactory">
    			<ref bean="sessionFactory" />
    		</property>
    	</bean>
     
    	<!-- sessionFactory -->
    	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    		<description>
    			définit la configuration de la session Hibernate et notement le lien vers le fichier de configuration Hibernate,
    			ainsi que la stratégie permettant de récupérer les différents objets mappés dans hibernate. 
    			Ici il s'agit de la stratégie basée sur les annotations.			 
    		</description>
    		<property name="configLocation">
    			<value>classpath:hibernate.cfg.xml</value>
    		</property>
    		<property name="configurationClass">
    			<value>org.hibernate.cfg.AnnotationConfiguration</value>
    		</property>
    	</bean>
     
    	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    		<property name="sessionFactory" ref="sessionFactory"/>
    	</bean>
     
    	<bean id="transactionProxy" abstract="true"	class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    		<description>
    			proxy transactionnel devant le bean. La configuration de la transaction est indiquée par la référence au bean 
    			transactionManager.
    		</description>
    		<property name="transactionManager">
    			<ref bean="transactionManager"/>
    		</property>
    		<property name="transactionAttributes">
    			<props>
    				<prop key="insert*">PROPAGATION_REQUIRED</prop>
    				<prop key="update*">PROPAGATION_REQUIRED</prop>
    				<prop key="save*">PROPAGATION_REQUIRED</prop>
    				<prop key="*">PROPAGATION_REQUIRED, readOnly</prop>
    			</props>
    		</property>
    	</bean>
     
    </beans>
    1. applicationContext.xml :

    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
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
     
    <beans>
     
    	<!-- Utilisateurs -->
    	<bean id="utilisateursManagerTarget" class=" service.impl.UtilisateursManagerImpl" >
    		<description>
    			injection de dépendance avec la propriété utilisateursDao qui fait référence au bean 
    			du fichier applicationContextDao.xml.
    		</description>
    		<property name="utilisateursDao">
    			<ref bean="utilisateursDao" />
    		</property>
    	</bean>
     
    	<bean id="utilisateursManager" parent="transactionProxy" >
    		<description>
    			on indique que la configuration détaillée de la transaction se faira par des annotations au
    			niveau de l'interface utilisateursManager
    		</description>
    		<property name="transactionManager">
    			<ref bean="transactionManager"/>	<!-- bean du applicationContextDao.xml -->
    		</property>
    		<property name="target">
    			<ref bean="utilisateursManagerTarget"/>
    		</property>
    		<property name="transactionAttributeSource">
    			<bean class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
    		</property>
    	</bean>
     
    	<!-- Clients -->
    	<bean id="clientsManagerTarget" class=" service.impl.ClientsManagerImpl" >
    		<description>
    			injection de dépendance avec la propriété clientsDao qui fait référence au bean 
    			du fichier applicationContextDao.xml.
    		</description>
    		<property name="clientsDao">
    			<ref bean="clientsDao" />
    		</property>
    	</bean>
     
    	<bean id="clientsManager" parent="transactionProxy" >
    		<description>
    			on indique que la configuration détaillée de la transaction se faira par des annotations au
    			niveau de l'interface clientsManager
    		</description>
    		<property name="transactionManager">
    			<ref bean="transactionManager"/>	<!-- bean du applicationContextDao.xml -->
    		</property>
    		<property name="target">
    			<ref bean="clientsManagerTarget"/>
    		</property>
    		<property name="transactionAttributeSource">
    			<bean class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
    		</property>
    	</bean>
     
    	<!-- Fournisseurs -->
    	<bean id="fournisseursManagerTarget" class=" service.impl.FournisseursManagerImpl" >
    		<description>
    			injection de dépendance avec la propriété fournisseursDao qui fait référence au bean 
    			du fichier applicationContextDao.xml.
    		</description>
    		<property name="fournisseursDao">
    			<ref bean="fournisseursDao" />
    		</property>
    	</bean>
     
    	<bean id="fournisseursManager" parent="transactionProxy" >
    		<description>
    			on indique que la configuration détaillée de la transaction se faira par des annotations au
    			niveau de l'interface fournisseursManager
    		</description>
    		<property name="transactionManager">
    			<ref bean="transactionManager"/>	<!-- bean du applicationContextDao.xml -->
    		</property>
    		<property name="target">
    			<ref bean="fournisseursManagerTarget"/>
    		</property>
    		<property name="transactionAttributeSource">
    			<bean class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
    		</property>
    	</bean>
     
    	<!-- Contacts -->
    	<bean id="contactManagerTarget" class=" service.impl.ContactManagerImpl" >
    		<description>
    			injection de dépendance avec la propriété contactDao qui fait référence au bean 
    			du fichier applicationContextDao.xml.
    		</description>
    		<property name="contactDao">
    			<ref bean="contactDao" />
    		</property>
    	</bean>
     
    	<bean id="contactManager" parent="transactionProxy" >
    		<description>
    			on indique que la configuration détaillée de la transaction se faira par des annotations au
    			niveau de l'interface contactsManager
    		</description>
    		<property name="transactionManager">
    			<ref bean="transactionManager"/>	<!-- bean du applicationContextDao.xml -->
    		</property>
    		<property name="target">
    			<ref bean="contactManagerTarget"/>
    		</property>
    		<property name="transactionAttributeSource">
    			<bean class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
    		</property>
    	</bean>	
    </beans>
    En vous remerciant,
    Nicolas

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 27
    Par défaut
    Au premier coup d'oeil, cela me semble bien.

    Pour te simplifier l'écriture de tes beans dao, tu peux toujours utiliser l'autowire by name, pour t'éviter d'écrire à chaque fois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <property name="sessionFactory">
    	<ref bean="sessionFactory" />
    </property>
    Sinon, si j'utilise une gestion de mes transactions par aop. Mais la je laisse Spring t'expliquer car c'est tout de suite moins simple : http://static.springsource.org/sprin...ansaction.html

    Mais attention tout de même à quelque chose : Si tu débute en spring hibernate, ne cherche pas tout de suite à optimiser tes fichiers applicationsContext.xml à outrance. Il faut qu'ils soient toujours compréhensibles à tes yeux.

    Aller bon courage pour la suite.

Discussions similaires

  1. configuration Hibernate et SQL server Express 2005
    Par K-Kaï dans le forum Hibernate
    Réponses: 9
    Dernier message: 28/03/2008, 18h58
  2. [tomcat] problème de configuration hibernate
    Par bastouffe dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 28/11/2006, 13h18
  3. [debutant] configurer hibernate sous myeclipse
    Par solawe dans le forum Hibernate
    Réponses: 3
    Dernier message: 22/11/2006, 10h36
  4. problem parsing configuration/hibernate.cfg.xml
    Par allstar dans le forum Hibernate
    Réponses: 2
    Dernier message: 25/08/2006, 07h23
  5. Configurer Hibernate pour Oracle
    Par turie dans le forum Hibernate
    Réponses: 1
    Dernier message: 29/05/2006, 15h08

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