티스토리 툴바


테이블이 변경될 때 마다 SchemaExport를 이용하여 테이블을 생성/변경한다. 이전에 Configuration을 직접 설정하던 것을 다른 용도를 위해 준비한 스프링 XML 설정의 세션팩토리를 이용하려고 했다. 그러나 다음과 같은 오류와 함께 실패했다.

2011-08-28 02:39:39,636 [ERROR] org.hibernate.tool.hbm2ddl.SchemaExport.execute():274 - schema export unsuccessful
org.hibernate.HibernateException: No local DataSource found for configuration - 'dataSource' property must be set on LocalSessionFactoryBean
	at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.configure(LocalDataSourceConnectionProvider.java:49)
	at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:137)
	at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:79)
	at org.hibernate.tool.hbm2ddl.ManagedProviderConnectionHelper.prepare(ManagedProviderConnectionHelper.java:51)
	at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:252)
	at com.cremoi.win.common.table.TableManagerView$1$1.run(TableManagerView.java:158)
	at java.lang.Thread.run(Unknown Source)

스프링 설정은 다음과 같다.

    <util:list id="entities">
        <value><!-- class qualified names --></value>
    </util:list>

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <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="defaultAutoCommit" value="true" />
        <property name="initialSize" value="5" />
        <property name="maxActive" value="30" />
        <property name="maxIdle" value="5" />
        <property name="maxWait" value="30000" />
        <property name="validationQuery" value="SELECT 1" />
        <property name="testOnBorrow" value="true" />
        <property name="testOnReturn" value="false" />
        <property name="testWhileIdle" value="true" />
        <property name="timeBetweenEvictionRunsMillis" value="60000" />
    </bean>

    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="annotatedClasses" ref="entities" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">${hibernate.dialect}</prop>
            </props>
        </property>
    </bean>

다음은 문제 해결을 위해 검색한 몇 개의 게시물이다. 하지만 정확한 해결책은 아직 못 찾았다.

저작자 표시 비영리 동일 조건 변경 허락