ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 10 댓글 기능 구현(1)
    Spring/03 MyBatis로 게시판 만들기 2023. 7. 27. 22:02
    반응형

    10 댓글 기능 구현(1)

    1) DAOService의 작성

    - 댓글 기능 구현 순서

    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.xmlparameter 값이나 resultTypeCommentDto를 사용 할 수 있다

    >> typeAlias를 없이 사용하려면 앞에 패키지 이름까지 입력해야된다

     

     

    CommentDaoImplTest.java

    >> 테스트 코드 실행결과 통과하였고 코드는 올리지 않았다

    >> 중요 : 테스트는 반드시 해볼 것

     

    Service 작성 & 테스트

    - 서비스 만들기 전에 게시물에 대한 댓글 comment_cntmapper를 만들어 줘야한다

     

    - 서비스 생성

    CommentServiceImpl.java (@Aurowired의 생성자 주입)

    >> @Aurowired의 생성자 주입을 사용하면 @Aurowired없이 생성자로 주입이 가능하다

          단, 생성자가 하나일때만 사용가능하다

    인스턴스 주입 VS 생성자 주입

    - 인스턴스 주입중 2개의 객체 중에 한 개의 @Autowired를 생략해도 에러를 알려주지 않는다 실행을 하면 에러가 발생 (원인을 찾기 어렵다)    반면 생산자 주입시 빠르게 에러를 확인 할 수 있다

    >> 나머지 메서드는 생략

     

     

    CommentService.java

     

     

     

    - commentService 테스트

    (1) 정상 진행

    CommentServiceImplTest.java

    >> 테스트 통과

     

     

    테스트 통과한 MySQL 데이터 확인

     

     

    (2) 예외가 발생했을 때 rollback 테스트

    >> 테이블의 데이터를 전부 지워 준다

     

    CommentServiceImplTestwrite 메서드 테스트

    CommentServiceImpl.java

    >> 예외를 발생 시킨다

     

     

    CommentServiceImplTest.java

    >> write 메서드 실행

     

     

    MySQL 데이터

    >> comment 테이블에는 데이터가 없고, comment_cnt0으로 되었다 (통과)

    >> 예외가 발생하면 comment_cnt는 올라가지 않는다

     

     

     

    CommentServiceImplTestremove 메서드 테스트

    CommentServiceImpl.java

    >> 예외를 발생시킨다

     

     

    MySQL에는 이전의 데이터가 남아있다

    >> board 데이터만 남아있다

     

    CommentServiceImplTest.java

    >> remove 메서드 실행

     

    MySQL 데이터

    >> 삭제에 실패했고 comment_cnt-1 되지 않았다

     

     

     

     

    반응형
Designed by Tistory.