배운것
1. controller, service, repository를 구분하는 이유와 각각이 하는 일
보통 컨트롤러, 서비스, 리포지토리는 변경이나 확장이 필요할때 각기 독립적으로 일어난다.
이렇게 계층을 분리 함으로써 유지보수가 편하고 코드의 가독성이 올라간다는 장점이 있다
controller: 클라이언트의 요청을 받고 서비스로 넘겨 클라이언트가 원하는 데이터를 반환한다
service: 애플리케이션의 핵심 로직을 담당한다.
repository: 데이터베이스와 맞닿아 있는 계층으로 DB에 접근하여 crud를 한다.
2. DTO의 의미
컨트롤러 <- (DTO)-> 서비스 <- (DTO)-> 리포지토리
코드내에서 데이터를 주고 받을떄 DTO라는 객체를 이용하여 서로 통신한다. (DTO = data transfer object)
3 DAO의 의미
데이터베이스에 접근하기 위한 객체입니다 (DAO = data aceess object)
4. Entity의 의미
클래스가 db 테이블과 1대1로 대응되고 필드가 db의 컬럼과 1대1로 대응한다.
컬럼과 필드의 이름이 같아야하고 어노테이션 (@id, @column등)을 통해 필드에 컬럼의 특성을 나타낸다.
느낀점
DTO와 DAO, Entity의 개념을 계속 헷갈려왔는데 요번 계기로 개념을 확실하게 잡고 가는것 같아서 좋다 그리고 이전보다 데이터를 주고 받는것에 능숙해졌다. 전엔 뷰 템플릿을 이용해서 view와 controller 사이에서만 데이터를 주고 받았는데 postman으로 실제 http 호출을 통해 데이터를 주고 받으니 더 웹프로그래밍을 하는 느낌이 들었다.
코드에서 배운점
1. 주소값이 겹쳐도 param이 들어오면 따로 처리가 될줄 알았는데 같은 url을 쓰면 그냥 안된다
2. 문자열을 비교할땐 .equal을 사용해야한다
아쉬운점
같은 이름을 넣었을경우 exception을 터뜨렸는데 이를 조금 더 예외처리를 우아하게 하는법을 몰라서 아쉬웠다