applicationContext.xml avec la source de données ou hibernate.cfg.xml. La différence?
Souhaitez effacer une certaine confusion. J'ai applicationContext.xml.
Question 1: Quoi la différence entre 1 & 2. Sont-ils à la fois même avec une approche différente?
Question 2:
J'ai posé la question sur le forum du Printemps concernant un problème. Onething il a mentionné à propos de la mise en commun est en dessous de
si vous avez besoin/voulez utiliser la connexion interne de mise en commun pour hibernate
Je voudrais des conseils contre elle et il suffit de configurer une source de données qui
prend en charge la connexion de mise en commun et de les injecter dans votre
sessionfactorybean.
regroupement de connexion interne pour hibernate = C'est numéro 2 ci-dessous. Droit?
il suffit de configurer une source de données qui prend en charge la connexion de mise en commun et de les injecter dans votre sessionfactorybean = C'est numéro 1 ci-dessous. droit?
1# -
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="maxActive" value="100"/>
<property name="maxIdle" value="30"/>
<property name="maxWait" value="16000"/>
<property name="minIdle" value="0"/>
</bean>
<!-- Hibernate SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="annotatedClasses">
<list>
<value>com.mkyong.customer.model.Customer</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">false</prop>
<prop key="hibernate.generate_statistics">true</prop>
</props>
</property>
</bean>
2# -
Mise en commun et les informations de connexion sont en hibernate.cfg.xml
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml" />
</bean>
- Salut, moi aussi je suis confus sur l'approche à utiliser. je pense que je vais aller pour la cfg.xml comme cela se sépare et découple le hibernate config à l'écart de ce applicationContext ce qui facilite la création de données multiples config sources.
Vous devez vous connecter pour publier un commentaire.
Réponse 1:
Les deux approches sont les mêmes. Par défaut , hibernate lit la configuration de
classpath:hibernate.cfg.xml
de construireSessionFactory
.LocalSessionFactoryBean
permet simplement de configuration hibernate configuration à l'intérieurapplicationContext.xml
au lieu dehibernate.cfg.xml
.Si une même propriété est spécifiée dans les deux fichiers , en fonction de la propriété , il est addictif effet ou les propriétés spécifiées dans
applicationContext.xml
prendra plus prioritaires, telles que ces valeurs danshibernate.cfg.xml
sera ignoré.Pour la méthode 1,
annotatedClasses
ethibernateProperties
devrait avoir l'effet addictif avec les valeurs correspondantes danshibernate.cfg.xml
. Le DBCP dataSouruce dansapplicationContext.xml
devrait provoquer l'propriétés connexes danshibernate.cfg.xml
être ignoré.Réponse 2:
Pour la méthode 2 , si vous ne spécifiez pas toutes les propriétés de
LocalSessionFactoryBean
, tous les hibernate configurations sont spécifiés par lehibernate.cfg.xml
. Si il n'y a pas de pool de connexion configuré danshibernate.cfg.xml
, hibernate est propre pool de connexion de l'algorithme est utilisé par défaut , ce qui est assez rudimentaire et non destinées à une utilisation dans un système de production, ou même pour les tests de performance.Si ce que vous voulez est de construire une fabrique de session, vous obtiendrez le même résultat avec les deux approches. Je ne pense pas que l'on ne peut faire plus que l'autre.
À mon avis, vous devez utiliser la hibernate.cfg.xml approche lorsque vous n'utilisez pas le Printemps. Lorsque JUnit test de votre DAOs par exemple. Ne pas avoir à construire un Printemps contexte de l'application rend votre tests s'exécutent plus rapidement.
Toutefois, lorsque vous utilisez le Printemps, je pense que c'est une bonne chose pour garder votre source de données, séparés de la session de l'usine. Vous êtes à l'aide de Printemps pour la dépendance injecter, à droite? Pourquoi pas à l'aide de printemps pour donner à votre session d'usine ce dont il a besoin?