주요 클래스들

OneTwoThree·2023년 6월 5일
0

springboot

목록 보기
3/9

DTO

  • form 데이터를 받아오는데 사용한다
  • 프론트에서 form에서 input이나 textarea 등 데이터를 입력하는 태그의 name 속성이 dto의 필드랑 일치해야 함
  • 컨트롤러의 파라미터로 DTO 객체를 받아주면 된다
  • DTO를 Entity 객체로 변환할 toEntity 메소드를 선언하기도 함

Model, View

@Controller
public class FirstController {
    @GetMapping("/hi")
    public String nicetoMeetYou(Model model){
        model.addAttribute("username","몽이");
        return "greetings";
    }
}
  • Model 클래스는 따로 만들 필요 없이 import 해서 사용
  • Model에 값을 전달해 view에서 사용 가능함
  • greetings가 Controller가 반환하는 view
  • RestController를 사용하면 RestController는 data 자체를 반환하니까 이런 형태로 사용하지 않음
  • 프론트 프레임워크와 RestController를 같이 사용하면 아래와 같이 작동함
    • 프론트 서버에서 백엔드 서버로 요청 보냄
    • 백엔드 서버의 RestController는 프론트로 data 반환
    • 프론트 서버에서 data를 받아서 뷰페이지에 표시함

Controller : 클라이언트로부터 요청을 받는다
View : 최종페이지를 만들어줌
Model : 최종페이지에 쓰일 데이터를 View에게 전달

Entity

  • 자바 객체를 DB가 이해하게 하는 역할이다
  • DTO를 DB에서 이해하도록 만든 객체이므로 DTO의 필드는 기본적으로 갖는다
  • 추가적으로 id 값등을 가짐. id값은 @GeneratedValue로 자동생성하는 경우가 많다. 이럴 때는 생성자에 id 부분은 null을 전달해줘야 함
  • 활용하는 어노테이션으로는 @Entity, @Column, @Id, @GeneratedValue 등

Repository

  • Entity를 DB에 저장한다
  • JPA에서 제공하는 인터페이스를 구현해 리조피토리를 만든다
  • 아래 예시에서는 CrudRepository를 구현했는데 JpaRepository를 구현할 때가 많음
package com.example.firstproject.repository;

import com.example.firstproject.entity.Article;
import org.springframework.data.repository.CrudRepository;

public interface ArticleRepository extends CrudRepository<Article, Long> {
    
}
  • 템플릿 문법이고 연동할 Entity 클래스 이름과 Entity 클래스의 id 자료형인 Long을 템플릿 인자로 전달해줌
  • DB 연동에 기본적으로 필요한 메소드들 save() 등.. 은 모두 인터페이스에서 제공함
  • 필요할 경우 인터페이스에 쿼리문을 활용해 메소드 선언 가능
  • 컨트롤러의 필드로 리포지토리를 선언하는데 DI(의존성 주입)으로 객체를 직접 생성하지 않고 알아서 생성되게 함
    • 리포지토리 필드에 @Autowired 사용
    • 컨트롤러 클래스에 @RequiredArgsConstructor 사용. 대신 이 경우에는 멤버에 final 선언을 해줘야함

Controller

  • 클라이언트의 요청을 처리한다
  • 어떤 요청인지에 따라 다른 Mapping 어노테이션을 사용함
  • @PathVariable로 요청 url의 값을 변수로 사용 가능함
 @GetMapping("/articles/{id}")
    public String show(@PathVariable Long id){
        log.info("id = "+id);
        return "";
    }

Service

  • 컨트롤러와 리포지토리 중간에 위치한다
  • 컨트롤러가 웨이터, 서비스가 셰프, 리포지토리가 보조 셰프
  • 클라이언트가 메뉴를 요청하면 컨트롤러가 주문을 받아서 서비스에게 전달하고 서비스가 요리를 만들고 필요한 재료는 리포지토리가 가져온다.


0개의 댓글