Spring에서 외부 프로퍼티 파일(jdbc.properties)을 로드하는 설정
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/config/jdbc/jdbc.properties</value>
</list>
</property>
</bean>
▶ Spring 애플리케이션에서 데이터베이스 설정을 jdbc.properties 파일에서 가져오기 위해 사용된다.
PropertyPlaceholderConfigurer :
XML 설정에서 ${} 표현식을 사용하여 프로퍼티 값을 참조할 수 있도록 해준다.
예: <property name="url" value="${db.url}" />
WEB-INF/config/jdbc/jdbc.properties 파일을 로드하여 속성 값을 읽어온다.
<bean id="dataSource"
class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="driverClass" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
▶데이터베이스 연결(DataSource)을 설정하는 부분
SimpleDriverDataSource 를 사용하여 JDBC 데이터베이스 연결을 설정한다.이 코드가 제대로 작동하려면 프로퍼티 설정 파일 (jdbc.properties) 을 로드하는 설정이 필요하다.
<jdbc.properties>
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydb
jdbc.username=root
jdbc.password=1234
sqlSessionTemplate을 통해selectOne(),insert(),update()등을 호출 가능하다. Spring이 세션을 자동으로 관리하므로openSession(),close()필요 없다.
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis/model/modelConfig.xml" />
<property name="mapperLocations" value="classpath:mybatis/mappers/*.xml" />
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
▶SqlSessionFactoryBean 을 사용하여 MyBatis의 SqlSessionFactory 를 생성한다.
▶ 데이터베이스 연결 설정과 MyBatis 매퍼(XML 파일)들을 로드한다.
▶ 위의 코드로 아래의 코드를 사용이 가능하다.
예) mappers/*.xml 예제
<select id="getUserById" resultType="com.example.model.User">
SELECT * FROM users WHERE id = #{id}
</select>
예) @Configuration 사용
sessionFactory.setConfigLocation(
new ClassPathResource("mybatis/model/modelConfig.xml")
);
return sessionFactory.getObject();
}
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
</beans>
▶ DataSourceTransactionManager 를 사용하여 데이터베이스 트랜잭션을 관리한다.
▶ <tx:annotation-driven transaction-manager="transactionManager" />를 통해 @Transactional 어노테이션을 활성화