JAVA Spring

JAVA Spring boot DB안에 데이터 넣어보기

YagSill 2022. 1. 13. 08:52
728x90

안녕하세요 Yagsill 입니다.

 

오늘은 DB안에 데이터를 날려볼건데여! 

 

여러가지 기본적인 용어를 알아야 합니다.

 

1. DTO 객체 만들기

웹에서 데이터를 날렸을때 그 데이터가 DTO 데이터로 변환되어서 들어와야 합니다.

그래서 우리는 해당 데이터를 DTO라는 객체로 만들어서 받아주어야 합니다.

 

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 + '\'' +
                '}';
    }
}

 

2. DTO 데이터를 인식하고 변환해야합니다.

 

일단 웹에서 데이터를 날렸고 -> DTO 객체로 데이터를 받았습니다.

그렇다면 해당 DTO객체를 DB에 저장하기 위해서는 DB로 들어갈 수 있게 데이터를 변환해주어야 하겠죠?

이럴 때 Entity라는 하나의 행 데이터 객체로 집어넣어야 합니다.

 

@Entity // DB가 해당 객체를 인식할 수 있슴!
public class Article {

    @Id //대표값을 하나 넣어주어야 함. 약간 기본키 가튼 느낌.
    @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 + '\'' +
                '}';
    }
}

 

-> 어노테이션으로 Entity를 import 시켜야 합니다. 그래야지 DB에서 인식이 된다고 합니다.

-> DB를보면 기본키가 있어야 하잖아요? 그래서 우리는 @Id로 대표값을 넣어줍니다.

-> @GeneratedValue는 1.2.3....알아서 순서를 메겨주는 어노테이션이라고 생각하심됩니다.

-> @Column은 엑셀로 따져보면 "열" 이라는 뜻입니다.

-> 이 후 객체의 생성자를 추가해주면 됩니다.

 

3. Repository를 이용해 DB에 값을 CRUD(Create 만들고, Read 읽고, Update 수정하고, Delete 삭제하고) 해봅시다.

 

일단 Entity로 DB의 구조를 만들었다면 여기에 이제 값을 넣고 읽고 뭐하고 다 해야겠죠? 그러기 위해서 우리는 Spring boot JPA에서 제공하는 CrudRepository 라는 인터페이스를 상속받아서 사용할겁니다.

CrudRepository 인터페이스는 알아서 읽고 쓰고 수정하고 삭제하고 다 할 수 있습니다.

 

// Spring boot JPA에서 제공하는 crudRepository라는 인터페이스를 상속받아서 사용
// 만들고, 읽고, 쓰고, 삭제하기 까지 다 되는것이다.
// 여기에 두개의 파라메터 관리대상 Entity인 Article과 Article의 대표값의 타입 Long을 넣어줘야함.

public interface ArticleRepository extends CrudRepository<Article,Long> {

}

 

두개의 파라메터를 받아서 사용해야 하는데요.

entity로 DB의 구조를 만들었잖아여? 그 DB의 구조는 제가 위에서 설명한 것처럼 Article이라는 이름을 가지고 있써여

그래서 두개의 파라메터중 첫번째 파라메터는 Article을 넣어줍니다. 그리고 두번째 인자로는 Article의 기본키는 Id였죠? 그 Id의 타입을 넣어주면 됩니다.

 

이렇게되면 

웹에서 Submit해봅시다.

짠 아주 잘 들어왔네요~!!

 

그리고 이 것을 프린트로 찍기위해서는

 

@Controller
public class articleController {

    @Autowired // 스프링 부트가 미리 생성해놓은 객체를 가져다가 자동으로 연결해 준다.
    private ArticleRepository articleRepository;

    @PostMapping("articles/create")
    //DTO로 데이터를 받아옴.
    public String createArticle(ArticleForm form){
        System.out.println(form.toString());

        //1. Dto를 변환(Entitu!)
        //Article은 타입임. toEntity라는 메소드(값들을 리턴하는 메소드이다)
        Article article = form.toEntity();
        System.out.println(article.toString());

        //2 Repository에게 Entity를 저장하게 함
        Article saved = articleRepository.save(article);
        System.out.println(saved.toString());

        return "";
    }
}

 

Controller에서 이렇게 해주어야 합니다.~~

 

즐거운 코딩하세용~!~

728x90