ch4-2 - MyBatis로 DAO 작성하기
- DAO 작성 순서 - DB테이블, mapper.xml, Dto, DaoImpl, extract interface, 테스트
- DTO - 계층간에 데이터를 주고 받기 위한 객체
- #{}와 ${}의 차이
- XML의 특수문자 처리 -
<, >, <!CDATA[]]>
BoardDao의 작성
- DB테이블 생성
2-1. Mapper XML에 CRUD 작성.
2-2. DTO 작성
- DAO 인터페이스 작성
- DAO 인터페이스 구현 & 테스트
DTO란? - Data Transfer Object
- 계층간의 데이터를 주고 받기 위해 사용되는 객체
- @Controller
- 요청과 응답을 처리
- 데이터의 유효성 검증
- 실행 흐름을 제어
- @Service
- 비지니스 로직 담당
- 트랜잭션 처리
- 예외처리를 try-catch문으로 @Service에서 처리하거나, @Controller로 떠넘기기, 예외 되던지기 가능.
- @Repository
- 순수 Data Access 기능
- 조회, 등록, 수정, 삭제
- 예외처리를 하지 않고 무조건 @Service로 떠넘기기
#{}와 ${}의 차이
#{title} ==> ?와 PreparedStatement를 쓰도록 바뀜.
'${title}' ==> '"+title+"', Statement를 쓰도록 바뀜. #보다 더 유연하지만 SQL Injection에 취약.
XML의 특수 문자 처리
XML내의 특수문자(>,<,&...)는 < >로 변환 필요.
또는 특수문자가 포함된 쿼리를 <!CDATA[와]]>로 감싼다.