Java Object와 SQL 문 사이의 자동 Mapping 기능을 지원하는 ORM(Object-Relational Mapping) Framework
<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
<?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="org.mybatis.example.BlogMapper">
<select id="selectBlog" parameterType="int" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>




mapping 파일에 기재된 SQL을 호출하기 위한 Interface
<!--일반설정-->
<bean id="ds" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="driverClass" value="com.mysql.cj.jdbc.Driver"/>
<property name="url"
value="jdbc:mysql://127.0.0.1:3306/ssafyweb?serverTimezone=UTC&useUniCode=yes&characterEncoding=UTF-8"/>
<property name="username" value="ssafy"/>
<property name="password" value="ssafy"/>
</bean>
<!--ConnectionPool 설정 (DBCP)-->
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/ssafy"></property>
</bean>
✔️ springboot는 자체적으로 Hikari CP라는 Pool을 가지고 있다.
@Transactional
- @Before(start transaction 처리), @After(정상처리되면 commit, exception이면 rollback)
- 프록시 패턴 : 프록시를 통해 접근, 직접적인 호출 안된다.
✔️이때, 프록시 패턴이란❓
대상 원본 객체를 대리하여 대신 처리하게 함으로써 로직의 흐름을 제어하는 행동 패턴이다.
<!--트랜잭션 관리자 설정-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!--annotation 기반 트랜잭션 관리자 설정-->
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="com.ssafy.*.model"/>
<property name="mapperLocations" value="classpath:com/ssafy/mapper/*.xml"/>
</bean>
<bean id="boardMapper" class="org.mybtis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.ssafy.board.model.mapper.BoardMapper"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
<context:component-scan base-package="com.ssafy.*.model,com.ssafy.util,com.ssafy.board.aop"/>