Whiteship's Note

1-3. 기본 설정 하기



src 폴더에 파일 두 개를 생성합니다. 하나는 log4j.properties 하나는 database.properties 입니다. log4j.properties파일은 logging과 관련된 설정파일이고 database.properties는 db 연결을 설정하는 것과 관련된 설정파일 같습니다. database.properties의 내용은 다음과 같습니다.

#
# data source jdbc connection
#

db.driver=org.postgresql.Driver
db.url=jdbc:postgresql:webapp2
db.username=postgres
db.password=webapp2


#
# hibernate
#

hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

녹색 부분은 db 커넥션을 생성하기 위해 필요한 정보이고 아래 dialect는 hibernate가 각 db가 사용하는 SQL 방언을 사용하려면 그에 맞는 SQLDialect를 사용하도록 지정해 주는 부분이라고 합니다. 현재 DB는 PostgreSQL을 사용할 것이기 때문에 위와 같이 설정해 두었습니다.

pgaAdmin을 실행시켜서 본인이 사용하시는 환경과 커넥션 설정 부분을 일치 시켜줘야 할 것 같습니다.

src 폴더에 spring을 사용하기 위해 두 개의 파일을 추가로 생성합니다.
먼저 applicationContext-jdbc-datasource.xml 파일을 추가합니다.

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:database.properties</value>
            </list>
        </property>
    </bean>
   
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${db.driver}"/>
        <property name="jdbcUrl" value="${db.url}"/>
        <property name="user" value="${db.username}"/>
        <property name="password" value="${db.password}"/>
    </bean>

오호.. 덩달아 Spring 공부도 하게 됩니다. 기쁘군요. :) 앞에 정의한 db 커넥션 부분을 가져와서 dataSource에 설정하는 곳에서 사용하고 있습니다.

다음으로 applicationContext-dao.xml 파일을 추가합니다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">

<beans default-autowire="byName">
    <!-- ================================================================ -->
    <!--                       SessionFactory                             -->
    <!-- ================================================================ -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" autowire="no">
        <property name="dataSource" ref="dataSource" />
        <!-- 요 사이에 나중에 뭔가 들어갑니다. --!>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">${hibernate.dialect}</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
            </props>
        </property>
    </bean>

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" autowire="no">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
</beans>

녹색 부분은 앞서 정의한 dialect 설정을 적용하는 것이고 show_sql을 true로 하면 실행이 될 때 콘솔창에 실행되는 sql문을 보여줍니다. hbm2ddl.auto를 update로 해두면 DB의 테이블을 매핑하고 있는 파일이 바뀌면 테이블도 바뀌게 된다고 합니다. 이 부분에 대한 설명을 찾아보니 다음과 같이 적혀 있습니다.

Automatically validate or export schema DDL to the database when the SessionFactory is created. With create-drop, the database schema will be dropped when the SessionFactory is closed explicitly.
출처 : http://www.hibernate.org/hib_docs/v3/reference/en/html/session-configuration.html

이제 설정은 끝났습니다.
top