1. DAO와 Mapper 인터페이스의 정의
DAO
- Date Access Object
- 데이터베이스(DB)의 데이터에 접근하는 객체
- 즉, DB에 접근하여 데이터를 조회하고 조작하는 기능을 하는 객체
- DAO 구조는 인터페이스와 그 인터페이스를 구현한 클래스의 결합된 형태
- Controller.java > Service.java > ServiceImpl.java > DAO.java > Mapper.xml
Mapper interface
- Mybatis의 mapping xml 파일에 작성된 sql을 호출하기 위한 인터페이스
- 단순 인터페이스
- 인터페이스를 구현한 클래스 사용하지 않음
- mybatis 3.0 이상부터 지원
- Controller.java > Service.java > Mapper.java > Mapper.xml
2. 사용 시 차이점
Mapper 인터페이스를 사용하지 않을 경우 : DAO 사용 시
1. SqlSession을 등록하여 사용
2. DAO 인터페이스와 이 인터페이스를 구현한 DAO 클래스 생성이 필요
3. SQL 호출 시에, namespace + , + sql ID를 지정하여 사용session.selectOne("com.example.mapper.BoardMapper. getBoardList", board_no); //namespace(com.example.mapper.BoardMapper), sql ID(getBoardList)
4. select, selectOne, insert, update, delete 등 제공하는 메서드를 사용하여야 함
@Repository public class BoardDaoImpl implements BoardDao { @Autowired private SqlSession session; @Override public List<BoardDto> selectList { return session.selectOne("com.example.mapper.BoardMapper.selectList", board_no); } }
Mapper 인터페이스 사용 시
1. mapper.xml의 SQI ID는 Mapper 인터페이스에 정의된 메서드명과 동일하게 작성
2. mapper.xml의 namespace는 패키지명을 포함한 mapper인터페이스명으로 작성
3. @Mapper 어노테이션을 사용하여 등록
BoardMapper 인터페이스
@Mapper
public interface BoardMapper {
List<BoardDto> getBoardList();
}
BoardMapper.xml
<mapper namespace="com.example.mapper.BoardMapper"> // 1.namespace = 패키지명 포함한 mapper인터페이스명
<select id="getBoardList"> // 2.sql ID = mapper인터페이스의 메서드명
select * from board orderby board_no desc;
</select>
</mapper>
'SPRINGBOOT' 카테고리의 다른 글
[spring security] 3. springconfig 설정 : BCrype 암호화 메서드 (0) | 2024.01.10 |
---|---|
[spring security] 2. 인증과 인가, securityConfig 설정 (1) | 2024.01.10 |
[spring security] 1. 스프링 시큐리티의 동작 원리 (0) | 2024.01.10 |
클라이언트와 서버 (0) | 2024.01.02 |
원격 프로그램의 작성 및 실행 (0) | 2024.01.02 |