-
10 댓글 기능 구현(1)Spring/03 MyBatis로 게시판 만들기 2023. 7. 27. 22:02반응형
10 댓글 기능 구현(1)
1) DAO와 Service의 작성
- 댓글 기능 구현 순서
① DB테이블 생성
② Mapper XML 작성
③ DAO 작성 & 테스트
④ Service 작성 & 테스트
⑤ 컨트롤러 작성 & 테스트
⑥ 뷰(UI) 작성 & 테스트
>> 한번에 만들고 테스트X, 순서대로 만들면서 테스트 OK
2) 실습
① DB테이블 생성
MySQL 테이블 생성
② Mapper XML 작성
commentMapper.xml
③ DAO 작성 & 테스트
CommentDaoImpl.java
>> 매퍼에 대한 메서드를 생성했다
>> CommentDao 추출(마우스 오른쪽→ Refactor → Extract interface)
CommentDao.java
CommentDto.java
>> 기본생성자, 생성자 생성(cno, reg_date, up_date는 제외 - cno는 자동증가 이기 때문에 제외)
>> Getter and Setter 생성, toString 생성
>> equals( ) and hashCode( ) 생성 (reg_date, up_date 제외)
Mybatis-config.xml
>> typeAlias를 지정해줘야 commentMapper.xml의 parameter 값이나 resultType에 CommentDto를 사용 할 수 있다
>> typeAlias를 없이 사용하려면 앞에 패키지 이름까지 입력해야된다
CommentDaoImplTest.java
>> 테스트 코드 실행결과 통과하였고 코드는 올리지 않았다
>> 중요 : 테스트는 반드시 해볼 것
④ Service 작성 & 테스트
- 서비스 만들기 전에 게시물에 대한 댓글 comment_cnt의 mapper를 만들어 줘야한다
- 서비스 생성
CommentServiceImpl.java (@Aurowired의 생성자 주입)
>> @Aurowired의 생성자 주입을 사용하면 @Aurowired없이 생성자로 주입이 가능하다
단, 생성자가 하나일때만 사용가능하다
※ 인스턴스 주입 VS 생성자 주입
- 인스턴스 주입중 2개의 객체 중에 한 개의 @Autowired를 생략해도 에러를 알려주지 않는다 실행을 하면 에러가 발생 (원인을 찾기 어렵다) 반면 생산자 주입시 빠르게 에러를 확인 할 수 있다
>> 나머지 메서드는 생략
CommentService.java
- commentService 테스트
(1) 정상 진행
CommentServiceImplTest.java
>> 테스트 통과
테스트 통과한 MySQL 데이터 확인
(2) 예외가 발생했을 때 rollback 테스트
>> 테이블의 데이터를 전부 지워 준다
CommentServiceImplTest의 write 메서드 테스트
CommentServiceImpl.java
>> 예외를 발생 시킨다
CommentServiceImplTest.java
>> write 메서드 실행
MySQL 데이터
>> comment 테이블에는 데이터가 없고, comment_cnt도 0으로 되었다 (통과)
>> 예외가 발생하면 comment_cnt는 올라가지 않는다
CommentServiceImplTest의 remove 메서드 테스트
CommentServiceImpl.java
>> 예외를 발생시킨다
MySQL에는 이전의 데이터가 남아있다
>> board 데이터만 남아있다
CommentServiceImplTest.java
>> remove 메서드 실행
MySQL 데이터
>> 삭제에 실패했고 comment_cnt는 -1 되지 않았다
반응형'Spring > 03 MyBatis로 게시판 만들기' 카테고리의 다른 글
12 댓글 기능 구현(3) 출력, 삭제 버튼 만들기 (0) 2023.08.01 11 댓글 기능 구현(2) (0) 2023.07.28 09 REST_API와 Ajax (0) 2023.07.25 08 게시판 검색 기능 추가하기(2) (0) 2023.07.23 07 게시판 검색 기능 추가하기(1) (0) 2023.07.21