본문 바로가기

Spring Framework 개발 일지/Spring으로 게시판 만들기

FirstSpringBoard#3-3] 수정, 삭제, 특정 게시물 조회 기능 구현 & Service 인터페이스 구현

반응형

안녕하세요. 오늘은 나머지 기능을 구현할게요.

그리고 현재 테스트코드에서 DAO를 호출해서 비즈니스 로직을 처리하고 있습니다.

그러나 DAO를 바로 호출해서 비즈니스 로직을 처리하는 것은 기능의 확장이나 변화에 대해서 유연하게 대처하지 못하고 나중에 스프링의  AOP 기능을 적용하는데 문제가 있습니다. 그렇기 때문에 DAO를 추상화한 Service Interface를 만들고 Interface를 구현한 ServiceImpl 클래스를 만들어서 이 클래스에서 DAO를 호출하도록 할 것입니다.



과정은 이전과 동일해요.

1. Mapper.xml에 mapper 추가

2. mapper interface에 대응하는 메소드 추가

3. DAO에서 DB연동 코드 추가

4. 테스트 코드 작성

위와 같은 순서대로 진행됩니다.

나머지 모든 소스를 구현하는 만큼 여태까지 구현한 것을 포함한 모든 코드를 올리겠습니다.



1.마이바티스에서 SQL문을 관리해주고 파라미터, 리턴타입을 매핑해주는 Mapper.xml 파일입니다.
2. 위의 Mapper.xml 파일의 mapper들과 대응하는 인터페이스를 메소드들을 구현해줍니다. 3. 이제 DAO 클래스를 구현해줍니다. 우리가 정의한 Util 클래스에서 SqlSessionFactory로 SqlSession을 얻어오고 SqlSession에서 Mapper를 얻어왔습니다. 그리고 이 인터페이스에서 대응하는 메소드를 호출해서 DB연동을 처리해줍니다.



4. 이제 테스트 코드를 작성할게요. 테스트 코드는 스스로 작성해주는게 좋아요. 그리고 원칙적으로는 DAO를 작성하기 전에 테스트 코드를 먼저 작성해줍니다. 이 포스팅에서는 보여주기 위해서 기능 구현 -> 테스트 코드 작성 -> 동작 확인의 순서로 작업하고 있지만 실제 코딩 과정에서는 테스트 코드를 먼저 작성하고 기능을 구현해나가는 것도 이점이 있어요.



아래는 modifyBoardTest() 메소드를 실행한 결과 화면입니다. 테스트 코드가 잘 실행되고 DB에도 수정된 내용이 반영된 것을 알수 있습니다.

나머지 기능들도 실행되는 것을 확인할 수 있어요.

콘솔 화면같은 경우는 저와 다소 다를 수 있어요.

logging 설정 파일의 설정이 다르기 때문입니다. logging 설정 같은 경우는 구글링을 통해서 학습하시고 활용해주세요.




처음에 설명 했듯이 Service Interface와 이를 구현한 ServiceImpl 클래스를 만들어서 객체들의 의존관계들을 바꿀 것입니다.

클래스 다이어그램은 아래와 같아요.

제가 작성한 코드를 보는 것보다는 아래 클래스 다이어그램을 보고 직접 구현해보는 것을 추천합니다.

테스트 코드에서는 BoardDAO를 사용하던 것을 BoardService 타입의 변수가 BoardServiceImpl 객체를 참조하도록 바꿔주세요.

아래 의존관계의 변화를 코드에 반영하는 과정은 다음 포스팅에서 자세히 설명할게요.


반응형