Java

SpringBoot 공부 - DTO -> DB

Baetab 2023. 4. 25. 11:07

DTO 를 엔티티 로 변환

엔티티 : DB가 자바를 이해할수있게 만드는것 , 테이블 생성

레파지토리:DB를 저장및 관리 공간

ArticleController 에 코드 추가

public String createArticle(ArticleForm form){
        System.out.println(form.toString());
        //1.DTO를 엔티티로 변환
        Article article = form.toEntity();
        //2.리파지터리로 엔티티를 DB에 저장
        return  "";
    }

 

 

entity 패키지 -> Article 클래스 생성

 

Article 클래스 코드 수정

package com.example.firstproject.entity;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;

@Entity //엔티티 선언
public class Article {
    @Id //엔티티의 대표값 지정
    @GeneratedValue //자동 생성 기능 추가(숫자가 자동으로 매겨짐)
    private Long id;
    @Column //title 필드 선언 , DB 테이블의 title 열과 연결됨
    private String title;
    @Column //content 필드 선언,  DB 테이블의 content 열과 연결
    private String content;

}

 

ArticleController 에 엔티티 import

import com.example.firstproject.entity.Article;

 

이제 toEntity() 메서드를 만들러 ArticleForm 으로 이동하여 코드 수정

entity 에 만들었던 Article 에 맞춰 추가

 public Article toEntity(){
        return new Article(null,title,content);
    }

콜론 빼먹어서 오류임 무시하셈

 

리파지터리로 엔티티를 DB에 저장하기

 ArticleController 코드 추가

package com.example.firstproject.controller;

import com.example.firstproject.dto.ArticleForm;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import com.example.firstproject.entity.Article;

@Controller
public class ArticleController {
    private ArticleRepository; //articleRository 객체 선언
    @GetMapping("/articles/new")
    public String newArticleForm(){
        return "articles/new";
        }
    @PostMapping("/articles/create")
    public String createArticle(ArticleForm form){
        System.out.println(form.toString());
        //1.DTO를 엔티티로 변환
        Article article = form.toEntity();
        //2.리파지터리로 엔티티를 DB에 저장
        Article saved = articleRepository.save(article);
        //article 엔티티를 저장해 saved 객체에 반환
        return  "";
    }
}

 

리파지터리 만들기

com.example.firstproject 아래 repository 패키지 추가 -> ArticleRepository 인터페이스 생성

public interface ArticleRepository extends CrudRepository<Article,Long>

 

CrudRepository 를 상속받는 코드로 변경  (CrudRepository는 JPA에서 제공하는 인터페이스)

코드를 입력하면 자동으로 패키지가 import 된다

ArticleController 에 import 및 빨간밑줄 해결되었나 확인

 

 

위의 ArticleRepository 앞에 @Autowired 를 작성하여 스프링부트가 미리 생성해놓은 리파지터리 객체 주입(의존성 주입)

 

 

데이터 저장 확인하기

ArticleController 에서 article.toString() 메서드 호출 , saved.toString()메서드 호출

서버를 재시작후

제목에 가가가가 , 내용에 1111 적어보았다

정상적으로 Article 에 저장되고 id 도 부여되었다