AOP, 마이바티스, 오라클 설정파일 가져오기
<!-- Spring AOP -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${org.springframework-version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.2</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<!-- 오라클 드라이버 -->
<dependency>
<groupId>com.oracle.ojdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>19.3.0.0</version>
</dependency>
<!-- 마이바티스 설정 파일 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<transaction 설정을 위해 추가된 부분>
<!-- 어노테이션 기반 트랜잭션 활성화 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- 트랜잭션 매니저 설정 -->
<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager" ref="transactionManager" />
<property name="propagationBehavior" value="0" />
</bean>
<!-- 트랜잭션 템플릿 설정 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<기존 코드>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- Property Placeholder 설정 -->
<bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>/WEB-INF/config/jdbc.properties</value>
</property>
</bean>
<!-- DataSource 설정 -->
<bean id="dataSource" class="org.apache.ibatis.datasource.pooled.PooledDataSource">
<property name="driver" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- MyBatis SqlSessionFactory 설정 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml" />
<property name="mapperLocations" value="classpath:mybatis/mappers/*.xml" />
</bean>
<!-- MyBatis SqlSession 설정 -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
<!-- 어노테이션 기반 트랜잭션 활성화 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- 트랜잭션 매니저 설정 -->
<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager" ref="transactionManager" />
<property name="propagationBehavior" value="0" />
</bean>
<!-- 트랜잭션 템플릿 설정 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
</beans>

jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:XE
jdbc.username=c##jsp_user
jdbc.password=1234



root-context을 *.xml로 바꾸기


MyBatis 패키지 안에 있는 XML 파일은 SQL 쿼리를 정의하고, 해당 SQL을 실행할 수 있도록 매핑해주는 역할을 한다.
이 파일을 매퍼 파일 (Mapper.XML) 이라고 한다.
🎈매퍼 XML 파일 기본 구조
<UserMapper.xml>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.test.pro10.mapper.UserMapper">
<!-- 결과를 자동으로 매핑할 수 있도록 설정 -->
<resultMap id="userResultMap" type="com.test.pro10.dto.UserDTO">
<id property="id" column="id" />
<result property="name" column="name" />
<result property="email" column="email" />
</resultMap>
<!-- 사용자 정보 가져오기 -->
<select id="getUserById" parameterType="int" resultMap="userResultMap">
SELECT id, name, email
FROM users
WHERE id = #{id}
</select>
<!-- 사용자 추가하기 -->
<insert id="insertUser" parameterType="com.test.pro10.dto.UserDTO">
INSERT INTO users (name, email)
VALUES (#{name}, #{email})
</insert>
<!-- 사용자 정보 업데이트 -->
<update id="updateUser" parameterType="com.test.pro10.dto.UserDTO">
UPDATE users
SET name = #{name}, email = #{email}
WHERE id = #{id}
</update>
<!-- 사용자 삭제 -->
<delete id="deleteUser" parameterType="int">
DELETE FROM users WHERE id = #{id}
</delete>
</mapper>
➕ 각 요소 설명
1. <mapper namespace="com.test.pro10.mapper.UserMapper">
MyBatis 인터페이스와 연결되는 네임스페이스 (인터페이스와 일치해야 한다).2. <resultMap>
SQL 결과를 DTO 객체와 매핑해주는 설정.
property 는 DTO의 필드, column은 DB 컬럼명.
3. <select>
데이터를 조회할 때 사용 (resultMap으로 결과를 매핑).
#{id} 같은 변수는 파라미터 값이 들어갈 자리.
4. <insert>
parameterType으로 DTO를 지정).5. <update>
WHERE 조건 필수!).6. <delete>
WHERE 조건 필수!).<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org/DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias type="com.test.pro09.AccountDTO" alias="accountDTO" />
</typeAliases>
</configuration>
