복붙노트

[SPRING] applicationContext.xml에는 datasource 또는 hibernate.cfg.xml이있다. 차?

SPRING

applicationContext.xml에는 datasource 또는 hibernate.cfg.xml이있다. 차?

혼란을 없애고 싶습니다. 나는 applicationContext.xml을 가지고있다.

질문 1 : 1과 2의 차이점은 무엇입니까?

질문 2 :

나는 Spring 포럼에서 몇 가지 문제점에 관해 질문했다. 그가 풀링에 대해 언급 한 것이 아래에 있습니다.

최대 절전 모드의 내부 연결 풀링 = 아래 숫자 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>

2# -

풀링과 연결 정보는 hibernate.cfg.xml에 있습니다.

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="configLocation" value="classpath:hibernate.cfg.xml" />
    </bean>

해결법

  1. ==============================

    1.답변 1 :

    답변 1 :

    두 방법 모두 동일합니다. 기본적으로, hibernate는 classpath : hibernate.cfg.xml에서 설정을 읽어서 SessionFactory를 구현한다. LocalSessionFactoryBean은 단지 hibernate.cfg.xml 대신에 applicationContext.xml 내에서 최대 절전 설정을 할 수있게 해준다.

    속성에 따라 두 속성 모두에 동일한 속성이 지정된 경우 hibernate.cfg.xml의 값이 무시되도록 appContext.xml에 지정된 속성이 더 중대한 영향을 주거나 중독성이 있습니다.

    방법 1의 경우, annotatedClasses와 hibernateProperties는 hibernate.cfg.xml의 해당 값에 중독성이 있어야한다. applicationContext.xml의 DBCP dataSouruce는 hibernate.cfg.xml의 관련 프로퍼티를 무시하도록합니다.

    답변 2 :

    방법 2의 경우 LocalSessionFactoryBean의 속성을 지정하지 않으면 모든 최대 절전 모드 구성이 hibernate.cfg.xml에 의해 지정됩니다. hibernate.cfg.xml에 커넥션 풀이 설정되어 있지 않으면, hibernate 자신의 커넥션 풀링 알고리즘이 기본적으로 사용된다. 이는 매우 기초적이며 프로덕션 시스템이나 성능 테스트 용으로 사용하기위한 것이 아니다.

  2. ==============================

    2.원하는 것이 세션 팩토리를 만드는 것이라면 두 방법 모두에서 동일한 결과를 얻을 수 있습니다. 나는 사람이 다른 사람보다 더 많이 할 수 있다고 생각하지 않는다.

    원하는 것이 세션 팩토리를 만드는 것이라면 두 방법 모두에서 동일한 결과를 얻을 수 있습니다. 나는 사람이 다른 사람보다 더 많이 할 수 있다고 생각하지 않는다.

    필자는 Spring을 사용하지 않을 때 hibernate.cfg.xml 접근 방식을 사용하겠다. 예를 들어, JUnit이 DAO를 테스트 할 때. Spring 애플리케이션 컨텍스트를 구축 할 필요가 없기 때문에 테스트를 더 빠르게 실행할 수있다.

    그러나 Spring을 사용할 때 데이터 소스를 세션 팩토리에서 분리하여 보관하는 것이 좋습니다. 의존성 주입을 위해 Spring을 사용하고 있습니다. 왜 스프링을 사용하여 세션 팩토리에 필요한 것을 제공하지 않습니까?

  3. from https://stackoverflow.com/questions/12634475/applicationcontext-xml-with-datasource-or-hibernate-cfg-xml-difference by cc-by-sa and MIT license