Service interface, DAO interface, mapper

최고고·2022년 11월 9일
0

내가 한 스프링 프로젝트의 구조

Controller - mapper인터페이스 - Mapper.xml

|

뷰단

이렇게 @mapper 어노테이션이 붙은 인터페이스를 이용해 메서드명과 xml 파일의 id를 매핑시키는 방법은 스프링부트에서 사용되는 거라 한다.

책에서 알려준 흐름

Controller - Service 인터페이스 - Service 인터페이스 구현 - DAO 인터페이스 - DAO인터페이스 구현(@Repository) - Mapper.xml

서비스 인터페이스를 작성하지 않았었는데, 한번 작성해보려고 한다.

Service 는 불필요하게 Http 통신을 위한 HttpServlet을 상속 받을 필요도 없는 순수한 자바 객체로 구성된다 ( Service 에 request, response와 같은 객체를 매개변수로 X 컨트롤러에서 해야함)
모듈화를 통해 어디서든 재사용이 가능한 클래스파일(view단이 변경되더라도 Service는 view에 종속적인 코드가 없기때문에 그대로 재사용 할 수 있어야 한다는 뜻)
DAO가 DB에서 받아온 데이터를 전달받아 가공하는 것
DAO가 읽은 데이터에 대한 비즈니스 로직을 수행하고, 그것을 하나의(혹은 여러개의) 트랜잭션으로 묶음, 즉, Service가 트랜잭션 단위임
컨트롤러에서 리다이렉트로 페이지를 넘기는 경우 : 리다이렉트시점에 원하는 데이터를 임시로 추가해서 넘기는 작업이 가능

일단 파일업로드 하는것부터 하고

서비스, DAO 인터페이스를 생성후 구현해보겠음


DAO 클래스에 붙은 어노테이션 @Repository :

  • 매퍼들을 포함해서 mapper처럼 sql을 메소드랑 매핑해서 쓰든 아니든 db를 조회 및 조작하는 것에 중점을 둔 개념
  • mapper를 포함함
  • @Repository를 붙이면 해당 객체는 자동으로 빈 등록이 되고 DI에 쓰일 수 있다
  • mapper를 호출해서 써 repository에 @MapperScan을 할 필요 없이 사용할
  • @Repository의 value 값을 설정하면 alue값과 mapper.xml의 namespace의 이름이 일치하면 됨
@Repository("test")
public void TestRepository {
	...
}
<mapper namespace="test">
	...
</mapper>

이렇게


0개의 댓글