HTML 요소인 form 태그에 실려 전송되는 데이터 (= 택배와 비슷)
ex) 택배
= 택배 송장에 수령자와 배송형태를 적는 것
form 태그에 실어 보낸 데이터는 서버의 컨트롤러가 객체에 담음
= 이 객체를 DTO (Data Transfer Object)
-> DTO로 받은 데이터는 DB에 저장
'계층 간' 데이터 교환을 위한 객체(java beans)으로 데이터를 담아 전달하는 바구니라고 생각하면 됩니다.
-> DB에서 데이터를 얻어 service나 controller 등으로 보낼 때 사용하는 객체
@Controller : 컨트롤러 임을 선언
@GetMapping("/articles/new") //url 요청 접수
public String newArticleForm(){ //메서드 생성 및 반환값 작성
return "articles/new";
}

form class="container" action="/articles/create" method="post"
클라이언트가 정보를 받도록 컨트롤러의 조절
form -> 어디로 어떻게 보낼지 결정 -> DTO 컨트롤러(서버)

= 게시판에 글을 작성하면 dto로 보내짐
= 입력 폼과 DTO필드 연결하기
잠깐의 요약
1. form 태그의 action 속성에는 데이터를 전송할 URL
2. form 태그의 method 속성에는 get,post방식이 있음
3. @Postmapping 어노테이션은 post방식으로 전달된 요청을 받아 컨트롤러의 메서드에 전달
4. 폼데이터를 자동으로 받으려면 입력 폼에서 input,textarea태그의 name속성과 DTO클래스의 필드명이 같아야 한다
데이터베이스는 쉽게 데이터를 관리하는 창고 = DB ex) mariaDB,mySql,Oracle
DB의 모든 데이터도 행과 열로 구성된 테이블에 저장
자바 언어로 db에 데이터 저장 명령은 JPA(Java Persistence App)를 사용
Entity: 자바 객체를 db가 이해할 수 있게 만든 것으로 이를 기반으로 테이블이 만들어짐
-> 테이블에 대응하는 하나의 클래스라고 생각하시면 됩니다.
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 ->의존성 주입
객체를 생성하지 않고도 스프링에서는 자동 주입됨