능글맞은 구렁이

Spring - mybatis(Mapper XML) 본문

Framework/Spring

Spring - mybatis(Mapper XML)

보라색츄르 2021. 6. 29. 22:32

Spring  + myBatis 연동 방법 1 (SqlSessionDaoSupport를 상속 받는 DAO 작성)

 

1. applicationContext.xml 에 스프링 제공 SqlSessionFactoryBean 클래스 등록

<!-- Spring + mybatis Way 1 : SqlSessionFactoryBean Registration--> 
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" >
	<property name="dataSource" ref="dataSource"/>
	<property name="configLocation" value="classpath:sql-map-config.xml" />
</bean>

   

2. SqlSessionDaoSupport를 상속 받는 DAO 작성

@Repository
public class BoardDAOMybatis extends SqlSessionDaoSupport { //SqlSessionDaoSupport 부모

	public BoardDAOMybatis(){
	}

	@Autowired
	public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) { //sqlSessionFactory자식
		super.setSqlSessionFactory(sqlSessionFactory); 
	}

	public void insertBoard(BoardVO vo) {
		System.out.println("===> Mybatis로 insertBoard() 기능 처리");
		SqlSession session = getSqlSession(); //실제로 일을 처리하는 메서드
		session.insert("BoardDAO.insertBoard", vo);
	}
			:
			중간생략
			:
}

 

 

3. BoardServiceImpl 내부 멤버변수의 데이터 타입 변경

@Service("boardService")
public class BoardServiceImpl implements BoardService {

	@Autowired
	private BoardDAOMybatis boardDAO;
			:
			중간생략            
			:
}

 

 

 

DI와 관련된 어노테이션

Auto-Scanning Component(Stereotyping Annotations),@Component,@Repository,@Service,@Controller,@RestController

 

스프링 컨테이너는 base-package의 클래스를 검색해서 자동으로 자바 빈으로 등록하는 데 이에 해당하는 것이 

스테레오타입 어노테이션(Stereotype Annotation)인 @Component, @Repository, @Service, @Contoroller, @RestController 어노테이션이다.

 

@Controller, @Service, @Repository는 Presentation, Service, Data Access 계층을 나타내기 위한 @Component의 특별한 형태이다.

 

 

자동스캔을 위해서 XML 기반의 설정에서는 <context:component-scan base-package="onj.edu.spring, a.b.c" /> 과 같이 base-package를 기술하며, 

자바설정 기반인 경우 @ComponentScan 어노테이션을 사용하거나 AnnotationConfigApplicationContext#scan() 메소드를 이용하여 직접 스캐닝을 기술할 수 있다.

 

 

@Component : 일반적인 용도의 컴포넌트들을 표시하는 기본 스테레오 타입, 멤버변수와 getter, setter만 가지고 있는 DTO, VO 같은 컴포넌트를 지칭한다. 

스프링이 @Component 붙은 자바 클래스를 클래스패스 경로에서 자동으로 찾아 Application Context안에 이름을 부여하고 빈으로 등록한다. 

빈의 기본 Scope는 songleton이며 @Scope 어노테이션으로 변경 가능하다.

 

 

@Repository : 영속성 계층(Persistence Layer, Data Access Layer, 주로 DB와 관련된 작업을 수행)의 DAO 컴포넌트에 부여하는 어노테이션, 

@Component의 역할과 유사하며 DAO 메소드가 던지는 예외(Unckecked Exception)를 스프링의 DataAccessException으로 변환한다.

 

 

@Service :  비즈니스 로직을 담고 있는 서비스 레이어의 컴포넌트를 가리키며 @Component 어노테이션과 동작은 같지만 

서비스 계층의 클래스들은 @Service 어노테이션을 부여하는 것이 코드 가독성이 좋다

 

 

@Controller : 프리젠테이션 레이어의 컨트롤러 컴포넌트, Spring MVC의 컨트롤러에 부여

'Framework > Spring' 카테고리의 다른 글

Spring-JPA(개념)  (0) 2021.07.04
Lombok  (0) 2021.07.01
Spring-Mybatis  (0) 2021.06.29
Spring-MVC  (0) 2021.06.23
Spring-어노테이션 기반 MVC개발  (0) 2021.06.23
Comments