<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<!--
  - Application context definition for JPetStore's data access layer.
  - Accessed by business layer objects defined in "applicationContext.xml"
  - (see web.xml's "contextConfigLocation"). 

이 설정화일은 "applicationContext.xml"에 정의된 비즈니스 레이어 오브젝트들에 의해 참조된다.

  -
  - This version of the data access layer works on a combined database,
  - using a local DataSource with DataSourceTransactionManager. It does not
  - need any JTA support in the container: It will run as-is in plain Tomcat. 

JTA(Java Transaction API) : J2EE 트랜잭션 매니저 (JTS:Java Transaction Service)를
실제 J2EE component(servlet,JSP,EJB..)에서 어떻게 사용할 것인지, 그를 위한 API 들을 정의한 spec.
근데 여기선 데이터베이스 억세스시에 DataSourceTransactionManager와 함께 local DataSource를
사용하고 있어서 container에서 그 어떤 JTA도 필요없다는군.
연동되어 있는 둘 이상의 데이터베이스 집단을  combined database라고 한다.
그 combined database가 JTA를 통해서 접근하게 되는 것이고...

  -->
<beans>
 <!-- ========================= RESOURCE DEFINITIONS ========================= -->
 <!-- Local Apache Commons DBCP DataSource that refers to a combined database -->
 <!-- (see dataAccessContext-jta.xml for an alternative) -->
 <!-- The placeholders are resolved from jdbc.properties through -->
 <!-- the PropertyPlaceholderConfigurer in applicationContext.xml -->
 <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}"/>
 </bean> 

jdbc.properties에 정의한 DB접속 정보들을 DataSource 화 한다.
jdbc.properties은 열어보면 그냥 URL과 ID랑 PASSWORD가 있을 뿐

 <!-- Transaction manager for a single JDBC DataSource -->
 <!-- (see dataAccessContext-jta.xml for an alternative) -->
 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource"/>
 </bean> 

위에서 생성한 dataSource 참조하여 스프링의 DataSourceTransactionManager가 움직인다.

 <!-- SqlMap setup for iBATIS Database Layer -->
 <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
  <property name="configLocation" value="WEB-INF/sql-map-config.xml"/>
  <property name="dataSource" ref="dataSource"/>
 </bean> 

SqlMap은 이미 어플리케이션과 Database를 연결하는데 있어서 몰라서는 안되는 OR매핑 프레임웍중의 하나이다.
위에서 생성한 dataSource sql-map-config.xml의 설정을 이용한다.
이를 통해 생성되는 객체의 id는 sqlMapClient이다.


 <!-- ========================= DAO DEFINITIONS: IBATIS IMPLEMENTATIONS ========================= -->

 

 

DAO(Data Access Object)에 대한 정의다. 싱글 데이터베이스이므로 대부분이  빈관리를 위한 sqlMapClient 객체만 참조하고 있다.

 <bean id="accountDao" class="org.springframework.samples.jpetstore.dao.ibatis.SqlMapAccountDao">
  <property name="sqlMapClient" ref="sqlMapClient"/>
 </bean>
 <bean id="categoryDao" class="org.springframework.samples.jpetstore.dao.ibatis.SqlMapCategoryDao">
  <property name="sqlMapClient" ref="sqlMapClient"/>
 </bean>
 <bean id="productDao" class="org.springframework.samples.jpetstore.dao.ibatis.SqlMapProductDao">
  <property name="sqlMapClient" ref="sqlMapClient"/>
 </bean>
 <bean id="itemDao" class="org.springframework.samples.jpetstore.dao.ibatis.SqlMapItemDao">
  <property name="sqlMapClient" ref="sqlMapClient"/>
 </bean>
 <!-- Refers to the combined database here -->
 <!-- (see dataAccessContext-jta.xml for an alternative) -->
 <bean id="orderDao" class="org.springframework.samples.jpetstore.dao.ibatis.SqlMapOrderDao">
  <property name="sqlMapClient" ref="sqlMapClient"/>
  <property name="sequenceDao" ref="sequenceDao"/>
 </bean> 

 

 

 

다른 설정들은 sqlMapClient 객체만 참조하는데 이것은 sequenceDao객체도 참조한다. sequenceDao의 정의는 하단부에 나와있다.

 <!-- OrderDao definition for MS SQL Server -->
 <!-- (to be used instead of the default orderDao) -->
 <!--
 <bean id="orderDao" class="org.springframework.samples.jpetstore.dao.ibatis.MsSqlOrderDao">
  <property name="sqlMapClient" ref="sqlMapClient"/>
  <property name="sequenceDao" ref="sequenceDao"/>
 </bean>
 -->

 

 

 

MS SQL 데이터베이스에서는 orderDao객체 생성시 이것을 이용하라는 것 같다.
클래스가 틀리다. 아마 쿼리의 내용이 다를듯 하다.

 <!-- Refers to the combined database here -->
 <!-- (see dataAccessContext-jta.xml for an alternative) -->
 <bean id="sequenceDao" class="org.springframework.samples.jpetstore.dao.ibatis.SqlMapSequenceDao">
  <property name="sqlMapClient" ref="sqlMapClient"/>
 </bean> 

 

 

 

sqlMapClient객체를 이용하여 생성되는 것인데 orderDao라는 것이 이 DAO를 이용하고  있다.

 <!-- SequenceDao definition for Oracle databases -->
 <!-- (to be used instead of the default sequenceDao) -->
 <!--
 <bean id="sequenceDao" class="org.springframework.samples.jpetstore.dao.ibatis.OracleSequenceDao">
  <property name="sqlMapClient" ref="sqlMapClient"/>
 </bean>
 -->

 

 

 

sequenceDao객체를 생성할때도 DB마다 특성을 탄다. 오라클일땐 이것을 이용한다.

</beans>

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [작성중/인프런] 스프링부트 시큐리티 & JWT 강의 황제낙엽 2023.12.20 5083
84 @ConfigurationProperties 사용하기 황제낙엽 2025.10.23 1617
83 Spring Boot 에서 서버 로직의 역할별 애노테이션 구분 황제낙엽 2025.10.13 1411
82 (확인전) [2021.03.12] Eclipse에서 Spring Boot로 JSP사용하기(Gradle) file 황제낙엽 2023.12.23 2817
81 Spring Boot PetClinic Sample Application 황제낙엽 2023.12.21 2575
80 Eclipse, Spring Boot, Gradle, SVN 레거시(2019) 시스템 유지보수 환경 구축 file 황제낙엽 2023.11.14 1732
79 [시리즈 강좌] 스프링부트로 웹서비스 구축하기 황제낙엽 2023.07.13 1691
78 Spring Boot에서의 RESTful API 모듈 file 황제낙엽 2020.04.16 1896
77 [POST] Spring MVC 구조 분석 황제낙엽 2024.01.17 2053
76 Spring Framework 에서 사용하는 annotation 황제낙엽 2024.01.17 2093
75 Spring MVC configuration file 황제낙엽 2024.01.17 2041
74 [스프링 시큐리티 OAuth2] 강의 자료와 학습용 소스 file 황제낙엽 2024.01.15 1595
73 OAuth 2.0 Resource Server - Spring Security OAuth2.0 황제낙엽 2023.12.27 2016
72 Spring, JSP, Gradle, Eclipse 환경 구축[2] - 샘플 프로젝트 file 황제낙엽 2023.12.24 1922
71 Spring, JSP, Gradle, Eclipse 환경 구축[1] - 레퍼런스 조사 황제낙엽 2023.12.23 2056
70 spring-security-samples 황제낙엽 2023.12.22 1800
69 [Bard] Spring 과 Spring Boot의 차이 file 황제낙엽 2023.12.21 1803
68 Spring 과 Spring Boot의 차이 file 황제낙엽 2020.05.26 2308
67 Spring Security OAuth2.0 파헤치기 황제낙엽 2019.09.05 2079
66 Spring Security OAuth2구현 file 황제낙엽 2019.09.05 2208
65 Spring Security OAuth 황제낙엽 2019.09.05 2442