带有datasource或hibernate.cfg.xml的applicationContext.xml.区别?

Pir*_*ada 23 spring hibernate struts2 java-ee

想澄清一些困惑.我有applicationContext.xml.

问题1: 1和2之间的区别是什么?它们是否与不同的方法相同?

问题2:

我在Spring论坛上询问了一些问题.他提到的有关汇集的内容如下

如果您需要/想要使用内部连接池来进行hibernate,我会建议它,并简单地配置一个支持连接池的数据源并将其注入到sessionfactory中.

hibernate的内部连接池=这是下面的数字2.对?

只需配置一个支持连接池的数据源并将其注入sessionfactorybean =这是下面的数字1.对?

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>
Run Code Online (Sandbox Code Playgroud)

2# -

池和连接信息位于hibernate.cfg.xml中

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="configLocation" value="classpath:hibernate.cfg.xml" />
    </bean>
Run Code Online (Sandbox Code Playgroud)

Ken*_*han 10

答案1:

两种方法都是一样的.默认情况下,hibernate从classpath:hibernate.cfg.xml构建中读取配置SessionFactory.LocalSessionFactoryBean只允许你在里面设置hibernate配置applicationContext.xml而不是hibernate.cfg.xml.

如果在两个文件中指定了相同的属性,则根据属性,它将具有令人上瘾的效果,或者指定的属性 applicationContext.xml将具有更高的优先级,hibernate.cfg.xml以便忽略这些值 .

对于方法1,annotatedClasses并且hibernateProperties应该具有相应值的上瘾效果hibernate.cfg.xml.DBCP dataSouruce in applicationContext.xml会导致相关属性hibernate.cfg.xml被忽略.

答案2:

对于方法2,如果未指定任何属性LocalSessionFactoryBean,则所有hibernate配置均由hibernate.cfg.xml.如果有配置中没有连接池hibernate.cfg.xml,Hibernate的连接池算法默认情况下使用,这是相当简陋,不打算用于生产系统,甚至性能测试.