폼 데이터란? HTML 요소인 <\FORM> 태그에 실려 전송되는 데이터.
폼 태그에 데이터를 전송할 때는 어디로, 어떻게 보낼지 등을 적어 보낸다.
폼 태그에 실어 보낸 데이터 -> 서버의 컨트롤러가 객체DTO에 담아 받음.
DTO -> 폼 데이터를 받는 객체, DTO로 받은 데이터는 최종적으로 DB에 저장된다.



폼 데이터 전송하기
action : URL 연결 주소를 적어 해당 페이지로 폼 데이터를 보낸다는 의미
method : 속성 값으로 get과 post 2가지를 설정할 수 있다.
아래와 같이 new.mustache 코드 수정, 여기서는 method를 post방식으로 설정하였다.


DTO 만들기
1. com.example.firstproject 경로에 새로운 패키지 dto 만들기


폼 데이터를 DTO에 담기
ArticleController 파일 코드 수정
폼 데이터를 DTO로 받을 수 있도록 매개변수를 ArticleForm으로 받아온다.
DTO에 폼 데이터가 잘 담겼는지 확인할 수 있도록 출력

입력 폼과 DTO 필드 연결
new.mustache 파일의 코드를 DTO의 필드와 연결할 수 있도록 각 필드명을 지정해준다

서버를 재시작하고 제목, 내용을 작성하고 submit -> 콘솔창에 데이터가 들어온 모습

이제는 폼 데이터를 DB에 저장해보자
처음 프로젝트를 만들 때 추가한 H2 DB를 사용할 것이다.
JAP란?
DB에 자바 언어로 명령을 내릴 수 있도록하는 도구.
이것도 프로젝트를 만들 때 추가했음.
JAP의 핵심 도구로는 엔티티와 리파지터리가 있다.
DTO를 DB에 저장하는 과정

form 객체의 toEntity()라는 메서드를 호츌해서 그 반환값을 Article 타입의 article 엔티티에 저장한다. -> 이제 Article 클래스와 toEntity()메서드를 만들어줘야함

1. Article 클래스 만들기
Article에 마우스를 올리고 Alt+Enter을 눌러 create class 'Article'을 선택.
이때 패키지 생성 위치를 com.example.firstproject.entity라고 수정하고 만들어준다.
-> 그러면 기본 패키지 아래에 entity 패키지가 만들어졌고, 내부에 Article 클래스가 있음

2. toEntity() 메서드 추가하기
이 메서드는 DTO인 form 객체를 엔티티 객체로 변환하는 역할을 한다
아티클 클래스를 만든것과 비슷하게 create method 'toEntity' in 'ArticleForm'을 클릭하여 DTO클래스의 ArticleForm에 toEntity()메서드 생성


리파지터리 만들기
ArticleRepository 인터페이스를 통해 리파지터리를 만들자.
1. 프로젝트 탐색기의기본 패키지에 repository 패키지 추가 -> com.example.firstproject.repository
2. 패키지 내에 인터페이스 클래스 ArticleRepository 생성
3. CrudRepository<T, ID> 를 상속받아 구현한다
4. Crud리파지터리는 JPA에서 제공하며 엔티티를 관리(생성,조회,수정,삭제)할 수 있음
이는 2개의 제네릭 요소를 받는다.
- Article: 관리 대상 엔티티의 클래스 타입
- Long: 관리 대상 엔티티의 대푯값 타입

5. ArticleController에 import com.example.firstproject.repository.ArticleRepository를 함
이제 리포지토리의 별도 정의 없이 Crud가 제공하는 기능을 사용 가능, save 메서드도 사용 가능
객체 주입하기
스프링 부트가 제공하는 자동 객체 생성을 사용하기 위해 ArticleController에 @Autowired 어노테이션을 붙인다. -> 스프링 부트가 만들어 놓은 객체를 가져와서 주입해줌 이를 의존성 주입이라고 한다.


현재 Article 테이블의 구성

H2 DB에 접속하기
src>main>resource> application.properties라는 파일로 가서
H2 DB에 웹 콘솔로 접속할 수 있는 설정인
spring.h2.console.enabled=true 라는 코드를 추가하여 저장해준다
그 후 웹 브라우저에서 localhost:8080/h2-console 로 접속하면 됨
이때, JDBC의 URL 값을 넣어줘야 하는데 H2 DB는 메모리에서 동작하므로 서버가 재시작 할때마다 바뀜. -> run 탭에서 ctrl+f를 눌러 JDBC를 검색하고 그 URL주소를 복사해 웹 브라우저에 붙여 넣어 connect해준다


DTO를 DB에 저장하기
컨트롤러가 DTO에 폼 데이터를 받으면 이 DTO를 엔티티로 변환한 후 -> 리파지터리를 이용하여 이 엔티티를 DB에 저장한다

이때 외부 객체를 자동으로 필요한 곳에 가져오는 법 -> **Autowired**