![article thumbnail image](https://blog.kakaocdn.net/dn/SG1v5/btrP45Famh7/UWv4ilBRFGpSUwCdrgKOqK/img.png)
728x90
데이터베이스는 데이터를 관리하는 창고
JPA : 자바언어를 DB가 이해할수있는 기능
DTO를 Etity로 변환하고 Repository를 통해 DB까지 저장해보자
./controller/ArticleController
ArticleController생성
package com.example.firstproject.controller;
import com.example.firstproject.dto.ArticleForm;
import com.example.firstproject.entity.Article;
import com.example.firstproject.repository.ArticleRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@Controller
public class ArticleController {
@GetMapping("/articles/new")
public String newArticleForm(){
return "articles/new";
}
@PostMapping("/articles/create")
public String createArticle(ArticleForm form){
System.out.println(form.toString());
//1. DTO를 Entity로 변환
Article article = form.toEntity();
System.out.println(article.toString());
//2. Repository에게 Entity를 DB안에 저장
Article saved = articleRepository.save(article);
System.out.println(saved.toString());
return "";
}
}
엔티티 작성하기
../entity/Article
package com.example.firstproject.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity // DB가 해당 객체를 인식 가능하게 한다
public class Article {
@Id // 대표값을 지정한다 like 주민번호
@GeneratedValue //1,2,3,... 자동생성 어노테이션!
private Long id;
@Column
private String title;
@Column
private String content;
public Article(Long id, String title, String content) {
this.id = id;
this.title = title;
this.content = content;
}
@Override
public String toString() {
return "Article{" +
"id=" + id +
", title='" + title + '\'' +
", content='" + content + '\'' +
'}';
}
}
변환메소드 추가
../dto/ArticleForm
package com.example.firstproject.dto;
import com.example.firstproject.entity.Article;
public class ArticleForm {
private String title;
private String content;
public ArticleForm(String title, String content) {
this.title = title;
this.content = content;
}
@Override
public String toString() {
return "ArticleForm{" +
"title='" + title + '\'' +
", content='" + content + '\'' +
'}';
}
public Article toEntity() {
return new Article(null,title,content);
}
}
리파지터리를 통한 엔티티 저장하기
../controller/ArticleController
package com.example.firstproject.controller;
import com.example.firstproject.dto.ArticleForm;
import com.example.firstproject.entity.Article;
import com.example.firstproject.repository.ArticleRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@Controller
public class ArticleController {
@Autowired //스프링 부트가 미리 생성해놓은 객체를 가져다가 자동연결!
private ArticleRepository articleRepository;
@GetMapping("/articles/new")
public String newArticleForm(){
return "articles/new";
}
@PostMapping("/articles/create")
public String createArticle(ArticleForm form){
System.out.println(form.toString());
//1. DTO를 Entity로 변환
Article article = form.toEntity();
System.out.println(article.toString());
//2. Repository에게 Entity를 DB안에 저장
Article saved = articleRepository.save(article);
System.out.println(saved.toString());
return "";
}
}
리파지터리 작성
../repository/ArticleRepository
package com.example.firstproject.repository;
import com.example.firstproject.entity.Article;
import org.springframework.data.repository.CrudRepository;
public interface ArticleRepository extends CrudRepository<Article,Long> {
// CrudRepository<관리대상 엔티티: Article, 대표값의 타입(id) : Long>
}
의존성(DI)주입하기
데이터 저장 흐름 확인
../controller/ArticleController
package com.example.firstproject.controller;
import com.example.firstproject.dto.ArticleForm;
import com.example.firstproject.entity.Article;
import com.example.firstproject.repository.ArticleRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@Controller
public class ArticleController {
@Autowired //스프링 부트가 미리 생성해놓은 리파지터리 객체를 가져옴(DI)
private ArticleRepository articleRepository;
@GetMapping("/articles/new")
public String newArticleForm(){
return "articles/new";
}
@PostMapping("/articles/create")
public String createArticle(ArticleForm form){
System.out.println(form.toString());
//1. DTO를 Entity로 변환
Article article = form.toEntity();
System.out.println(article.toString());
//2. Repository에게 Entity를 DB안에 저장
Article saved = articleRepository.save(article);
System.out.println(saved.toString());
return "";
}
}
동작 확인
값이 잘 입력하였다!
728x90
'Study > SpringBoot WebProject' 카테고리의 다른 글
Spring Boot lombok과 refactoring (1) | 2022.11.03 |
---|---|
Spring Boot DB테이블과 SQL (0) | 2022.11.03 |
Spring Boot 폼 데이터 주고받기 (0) | 2022.11.01 |
Spring Boot 뷰 템플릿/ 레이아웃 (0) | 2022.11.01 |
Spring Boot MVC역할과 흐름 (0) | 2022.11.01 |