1️⃣ 의존성 설정 (jar등록) - 5개의 jar
- ojdbc6_g.jar ( 오라클 드라이버, 11g Express Edition 버전 )
- mybatis.jar (mybatis 라이브러리)
- spring-jdbc.jar (스프링)
- spring-mybatis.jar (스프링)
- commons-dbcp2.jar ( DBCP: DataBase Connection Pool) (스프링) ⇒ 우리는 apache에서 제공해주는 것을 쓴다. 무조건 이걸 쓰는게 아님!
# DB 연동 의존성
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.5.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.jslsolucoes/ojdbc6 -->
<dependency>
<groupId>com.jslsolucoes</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.1.0</version>
</dependency>
💡 commons-dbcp2.jar ( DBCP: DataBase Connection Pool) 란?
connection들을 클래스에 담아놓고 = commons-dbcp2.jar ( DBCP : DataBase Connection Pool )
내가 아닌 Apache에서 오라클과 연동시켜 놓는다.
나는 connection을 연결해야될때 빌려서 리턴만 해주면 되니 간편하고
연결할 때 걸리는 시간도 대폭 단축시킬 수 있다.
2️⃣ jdbc properties 작성 및 등록 (src/main/resources 폴더에 com.config 패키지 )
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:xe
jdbc.username=SCOTT
jdbc.password=TIGER
스프링의 configuration파일(xml)에 등록 👇
<context:property-placeholder location="classpath:com/config/jdbc.properties"/>
3️⃣ commons-dbcp2 라이브러리에 있는 DBCP 기능의 빈을 등록
⇒ jdbc.properties에 등록된 4개의 정보를 이용해서 DB 연동하는 DataSource 설정
⇒ 이 실습에서는 Apache 그룹에서 제공한 commons-dbcp2 라이브러리를 사용한다.
(HikariCP 라이브러리도 무관)
⇒ 우리가 만든게 아니기 때문에 xml에 등록해야함
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
4️⃣ com.dto.DeptDTO 작성
5️⃣ DeptMapper.xml 작성 (src/main/resources 폴더에 com.config패키지)
https://mybatis.org/mybatis-3/getting-started.html
mybatis – MyBatis 3 | Getting started
It's very important to understand the various scopes and lifecycles classes we've discussed so far. Using them incorrectly can cause severe concurrency problems. Dependency Injection frameworks can create thread safe, transactional SqlSessions and mappers
mybatis.org
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="DeptMapper">
</mapper>
6️⃣ 이전 MyBatis에서 사용했던 SqlSessionFactory 역할의 빈을 등록
⇒ SqlSessionFactoryBean
- Mapper 등록
- DTO 별칭
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="xxx" />
<property name="mapperLocations">
<list>
<value>classpath:com/config/DeptMapper.xml</value>
</list>
</property>
<property name="typeAliases">
<list>
<value>com.dto.DeptDTO</value>
</list>
</property>
</bean>
⇒ DTO 별칭 지정 후, Mapper에서 select문 작성
7️⃣ SqlSessionTemplate 등록 (이전 MyBatis에서 사용했던 SqlSessionFactory 역할의 빈)
⇒ SqlSessionTemplate
⇒ setter 메서드가 제공안됨.
따라서 생성자로 주입해야 됨.
<bean id="session" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sessionFactory" />
</bean>
8️⃣ DAO, Service, Main 생성 및 작성 후
=> xml에 DAO, Service 등록 (component-scan)
com.dao.DeptDAO
@Repository
public class DeptDAO {
}
com.service.DeptServiceImpl
@Service
public class DeptServiceImpl implements DeptService {
}
user.xml에 등록 (component-scan)
<!-- 생성할 빈들의 정보를 패키지 단위로 지정
Scans the classpath for annotated components that will be auto-registered as Spring beans
-->
<!-- DAO, Service 빈으로 등록 -->
<!-- com으로 시작하는 패키지 중에 마킹된 애들 -->
<context:component-scan base-package="com.*" />
9️⃣ DAO에서 SqlSessionTemplate 주입받고 사용한다.
@Repository("dao")
public class DeptDAO {
@Autowired
SqlSessionTemplate session;
public List<DeptDTO> findAll(){
return session.selectList("DeptMapper.findAll");
}
🔟 insert / update / delete 추가
이전 Mybatis에서는 명시적으로 commit을 지정했었는데
스프링에서는 자동으로 commit 됨 !
'Framework > SPRING FRAMEWORK' 카테고리의 다른 글
Spring MVC (0) | 2023.09.13 |
---|---|
Transaction 처리 (0) | 2023.09.13 |
(사용자가 만든) bean들을 등록없이 객체 생성하는 방법 (0) | 2023.08.31 |
AOP_부가기능의 실행시점(advice) - @around (0) | 2023.08.31 |
AOP_부가기능의 실행시점(advice) - @AfterThrowing (0) | 2023.08.31 |