Spring

[스프링부트3 자바백엔드개발입문] 3장 게시판 만들고 새 글 작성하기: Create

1son 2023. 9. 22. 12:35

미리보기

CRUD란 게시글을 생성하고, 조회하고, 수정하고, 삭제하는 것 을 말합니다. 

게시판 만들기를 배우면 서버 프로그래밍과 데이터베이스의 기본기를 자연스럽게 익힐 수 있습니다.

 

 

3.1 폼 데이터란?

<form>태그에 실려 전송되는 데이터를 말합니다. 

<form>태그는 이렇게 웹 브라우저에서 서버로 데이터를 전송할 때 사용합니다. 

 

<form>태그에 실어 보낸 데이터는 서버의 컨트롤러가 객체에 담아 받습니다. 

이 객체를 DTO라고 합니다. DTO로 받은 데이터는 최종적으로 데이터베이스에 저장됩니다. 

 

 

3.2.1 입력 폼 만들기

 

3.2.2 컨트롤러 만들기

부트스트랩 CSS코드를 추가한 결과 화면

3.2.3 폼 데이터 전송하기

: 웹 페이지에 내용을 입력해 서버로 전송하는 예제를 실습해보자!

 

앞서 구성한 웹페이지에서 submit 버튼을 누른다고 아무것도 되지 않는다. 

데이터를 어디로, 어떻게 보낼 지 관한 정보를 주지 않았기 때문

 

action 속성(어디에 보낼 지), method 속성(어떻게 보낼 지)

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

 

3.2.4 폼 데이터 받기 

 

3.2.5 DTO 만들기

앞서 컨트롤러에서 폼 데이터를 받을 때 DTO에 담아 받는다고 배웠으니 DTO를 만들어 봅시다.

 

 

이 파일이 폼 데이터를 받아 올 그릇, 즉 DTO가 됩니다.

 

- 입력 폼에서 제목과 내용을 전송할 예정이니 DTO에도 필드 2개가 필요합니다. 

 

 

 

3.3.1 데이터베이스와 JPA

어떻게 DB에 자바로 명령을 내릴 수 있을까요?

바로 JPA를 사용하면 됩니다! 

 

이번에는 앞에서 DTO로 받은 폼 데이터를 DB에 저장하는 예제를 실습해보겠습니다.


순서 

1. DTO를 엔티티로 변환하기 

2. 레포지토리를 이용해 엔티티를 DB에 저장하기 

 

 

 

3.3.2 DTO를 엔티티로 변환하기 

- article 엔티티 생성 

- toEntity() 메서드 생성 

 

 

 

3.3.3 레포지토리로 엔티티를 DB에 저장하기 

: 다음으로 레포지토리로 엔티티를 DB에 저장하겠습니다. 

 

- 레포지토리 만들기 

- 객체 주입하기 

    @Autowired는 스프링 부트에서 제공하는 어노테이션으로 이를 컨트롤러의 필드에 붙이면

    스프링부트가 만들어놓은 객체를 가져와 주입해줍니다. 이를 의존성 주입이라고 합니다. 

    -> 인터페이스의 구현 객체를 new 키워드로 안만들어도 됨

 

- 데이터 저장 확인하기(article 엔티티가 정말 DB에 테이블로 저장됐는 지 확인)

 

 


 

3.4.1 H2 DB 접속하기

 

application.properties

 

 

3장 끗