홍팍[스프링 부트 입문 08] 데이터 생성 with JPA

Kevin·2022년 5월 10일
0

이 글은 유튜브에서 홍팍님의 "[스프링 부트 입문 08] 데이터 생성 with JPA"을 수강 후 개인적으로 공부한 내용을 정리한 글입니다.

Mission. JPA를 활용하여 Database에 데이터를 생성하시오.

DB에 데이터를 기록하는 방법? DB는 JAVA를 모른다, 우리는 Spring을 사용하지만 DB는 SQL을 이용하므로 이를 도와주는 도구가 JPA이다. 데이터 관리까지 도움을 준다.
JPA의 핵심도구로 Entity와 Repository가 있다.

DTO -> Controller -> Entity -> Repository -> DB의 과정으로 데이터가 저장된다.

@Entity, @Columm, @Id 등의 어노테이션을 붙여주면 DB에서 이해할 수 있다.
@GeneratedValue 자동으로 Id 값의 숫자가 올라간다.

//Article Class 이것이 Entity!
@Entity // DB가 해당 객체를 인식 가능!
public class Article {
    @Id // 대표값을 지정! like a 주민등록번호
    @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;
    }

Entity를 위와 같이 만들어준다. 데이터가 들어갈 형식이라고 할 수 있다.

public interface ArticleRepository extends CrudRepository<Article,Long> {
}

위처럼 기존의 JPA에서 제공하는 CrudRepository 인터페이스를 상속받아서 기존의 기능들을 정의 없이 사용할 수 있다.
<관리대상 Entity, 대표값의 Type>의 인자를 넣어야 한다.

		//1. Dto를 변환! Entity!
        Article article = form.toEntity();
        //2. Repository에게 Entity를 DB안에 저장하게 함!
        Article saved = articleRepository.save(article);

JPA에서 제공하는 Repository를 상속받아 articleRepository를 만들었기 때문에, CRUD의 기능인 .save(article)을 사용할 수 있다.

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

스프링 부트의 리플렉션을 활용하여 @Autowired 을 사용하면,
ArticleRepository articleRepository = new ArticleRepository; (이렇게 할 필요가 없다.)
복잡한 기능들을 알 필요 없이, 미리 생성해놓은 객체를 가져다가 자동으로 연결할 수 있다.

요약 정리

ArticleForm 이라는 DTO를 생성하고,
Article 이라는 Entity를 만들었고,
articleRepository라는 Repository를 만들어

DTO -> Controller -> Entity -> Repository -> DB의 과정의 JPA를 구현하였다.

profile
성장해나가는 개발자입니다.

0개의 댓글