봄학기 요약
요약
– jdbc.properties : 4 JDBC에 대한 정보
– mapper.xml : 기존 myBatis 메소드와 같은 SQL 문을 포함합니다.
– DTO.java: configuration.xml에서 DTO에 대한 별칭을 등록하는 것과 달리 DTO에서는 @Alias로 별칭을 지정한다.
-Dept.xml:
1) jdbc.properties 파일 가져오기
2) 데이터 소스 생성
3) SqlSessionFactoryBean 생성: 기존 configuration.xml과 동일한 역할로 DataSource를 주입하고 mapper.xml 및 DTO에 대한 별칭을 등록합니다.
4) SqlSessionTemplate 생성: SqlSession과 같은 역할을 하는 DAO에서 실제로 사용되는 객체이다.
5) DAO 및 서비스 객체 생성: 각 클래스의 멤버 변수를 자동으로 주입하거나 생성자 또는 setXXX() 메서드를 통해 명시적으로 주입합니다.
– DAO, Service: Service DAO와 DAO SqlSessionTemplate을 멤버변수로 가지는 클래스를 설정한다.
멤버 변수를 자동으로 삽입하려면 @Autowired를 사용하십시오.
1. jdbc.properties
– 기존 jdbc.properties와 동일합니다.
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:xe
jdbc.userid=scott
jdbc.passwd=tiger
2. DTO.자바
– 접근하고자 하는 테이블의 컬럼명과 동일하게 멤버 변수를 구성하고 해당 DTO의 alias를 annotation을 이용하여 표시한다.
@별칭(“별칭”)
package com.dto;
import org.apache.ibatis.type.Alias;
@Alias("DeptDTO") //com.dto.DeptDTO -> DeptDTO
public class DeptDTO {
private int deptno;
private String dname;
private String loc;
public DeptDTO() {
super();
// TODO Auto-generated constructor stub
}
public DeptDTO(int deptno, String dname, String loc) {
super();
this.deptno = deptno;
this.dname = dname;
this.loc = loc;
}
@Override
public String toString() {
return "DeptDTO (deptno=" + deptno + ", dname=" + dname + ", loc=" + loc + ")";
}
public int getDeptno() {
return deptno;
}
public void setDeptno(int deptno) {
this.deptno = deptno;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
}
}
3.dept.xml
– DataSource를 생성하고 SqlSessionFactoryBean에 삽입하고 SqlSessionTemplate에 삽입합니다.
– 메인과 서비스에서 사용할 서비스와 DAO도 빈 객체를 생성합니다.
1) 주석 활성화
– DTO에 별칭을 지정하고 DAO에 자동 주입하는 것과 같은 주석이 필요하므로 설정합니다.
2) 속성 등록 및 빈 DataSource 객체 생성
3) SqlSessionFactoryBean 생성
– 데이터 소스를 삽입합니다.
– mapper.xml을 등록하고 DTO 별칭을 등록합니다.
<bean id="mySqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!
-- dataSource 지정 -->
<property name="dataSource" ref="myDataSource"></property>
<!
-- mapper 등록 -->
<property name="mapperLocations">
<list>
<value>classpath:com/config/DeptMapper.xml</value>
</list>
</property>
<!
-- DTO Alias 설정 -->
<property name="typeAliases">
<list>
<value>com.dto.DeptDTO</value>
</list>
</property>
</bean>
4.DAO.자바
– 자동으로 SqlSessionTemplate을 멤버 변수로 포함합니다.
공개 클래스 DAO {
@Autowired
SqlSessionTemplate 세션;
…
}
5. 거래 처리
– 이전 글과 마찬가지로 dept.xml에 transaction manager를 생성하여 등록하고 Service.java에 @Transactional을 설정한다.
– 메인에서 서비스, DAO, mapper.xml까지 나머지 과정은 기존 마이바티스 방식과 동일하다.
https://damii323.36
04. JDBC_MyBatis로 DB 연결
JDBC Lesson Summary 0. MyBatis 패턴 구조 – jdbc.properties: 4가지 정보를 DB에 저장하는 파일이다.
– DeptMapper.xml : Dept 테이블에 접근하여 실행되는 SQL 문장을 저장한 파일. – DTO: 부서 테이블
damii323.tistory.com
– 단, 세션을 닫아야 했던 기존 방식과 달리 SqlSessionTemplate이 자동으로 반환되므로 닫을 필요가 없다.
* 개선
– 또한 DAO와 서비스를 dept.xml에 직접 생성하는 대신 Annotation을 이용하여 자동 객체 생성 및 멤버 변수를 자동 삽입할 수 있다.
– 대신 dept.xml 파일에서 구성요소 스캔을 구성해야 합니다.