CRUD - Create

혜준·2024년 5월 8일
post-thumbnail

1. 폼 데이터

  • HTML 요소인 form 태그에 실려 전송되는 데이터 (= 택배와 비슷)
    ex) 택배
    = 택배 송장에 수령자와 배송형태를 적는 것

  • form 태그에 실어 보낸 데이터는 서버의 컨트롤러가 객체에 담음
    = 이 객체를 DTO (Data Transfer Object)
    -> DTO로 받은 데이터는 DB에 저장

cf) DTO란?

'계층 간' 데이터 교환을 위한 객체(java beans)으로 데이터를 담아 전달하는 바구니라고 생각하면 됩니다.
-> DB에서 데이터를 얻어 service나 controller 등으로 보낼 때 사용하는 객체

2. Controller 만들기

@Controller : 컨트롤러 임을 선언
@GetMapping("/articles/new") //url 요청 접수
public String newArticleForm(){ //메서드 생성 및 반환값 작성
return "articles/new";
}

form 태그에 2가지 정보 추가 -> 폼 데이터 전송

  1. action 기능
    -> 어디에 보낼지
  2. method 기능
    -> 어떻게 보낼지 -> get 방식과 post방식

form class="container" action="/articles/create" method="post"

3. 폼 데이터 받기 -> DTO 필드 연결

  • 클라이언트가 정보를 받도록 컨트롤러의 조절

  • form -> 어디로 어떻게 보낼지 결정 -> DTO 컨트롤러(서버)

= 게시판에 글을 작성하면 dto로 보내짐
= 입력 폼과 DTO필드 연결하기

잠깐의 요약
1. form 태그의 action 속성에는 데이터를 전송할 URL
2. form 태그의 method 속성에는 get,post방식이 있음
3. @Postmapping 어노테이션은 post방식으로 전달된 요청을 받아 컨트롤러의 메서드에 전달
4. 폼데이터를 자동으로 받으려면 입력 폼에서 input,textarea태그의 name속성과 DTO클래스의 필드명이 같아야 한다

4. DTO 데이터 베이스 저장

  1. 데이터 베이스와 JPA
  • 데이터베이스는 쉽게 데이터를 관리하는 창고 = DB ex) mariaDB,mySql,Oracle

  • DB의 모든 데이터도 행과 열로 구성된 테이블에 저장

  • 자바 언어로 db에 데이터 저장 명령은 JPA(Java Persistence App)를 사용

    JPA의 도구 - Entity,Repository

  1. Entity: 자바 객체를 db가 이해할 수 있게 만든 것으로 이를 기반으로 테이블이 만들어짐
    -> 테이블에 대응하는 하나의 클래스라고 생각하시면 됩니다.

  2. Repository : 엔티티가 db속 테이블에 저장 관리될 수 있게 만든 인터페이스
    -> Entity에 의해 생성된 DB에 접근하는 메소드들을 사용하기 위한 인터페이스라고 생각

    1) dto를 엔티티로 변환 -> form.entity

    @PostMapping("/articles/create")
    public String createArticle(ArticleForm form) {
       System.out.println(form.toString());
       
       //1. dto를 엔티티로 변환
       Article article=form.toEntity();
       System.out.println(article.toString());
    
       // 2. 엔티티를 레포지터리로 db에 저장
       Article saved=articleRepository.save(article);
       System.out.println(saved.toString());
    
       return "";

    }

  • 라파지터리는 인터페이스로 설정

    @Autowired ->의존성 주입

  • 객체를 생성하지 않고도 스프링에서는 자동 주입됨


    = 폼 데이터를 dto로 받아 엔티티로 변환한 후 라파지터리를 이용해 db에 저장하는 과정

profile
성장을 추구하는 개발자 입니다 :)

0개의 댓글