게시판 만들기(스프링 부트3, 나도코딩 스터디)/3장. 게시판 만들고 새 글 작성하기 : Create
3.3 DTO를 데이터베이스에 저장하기(게시판 만들기 / 길벗 코딩 자율학습단)
coding232624
2023. 11. 22. 23:11
데이터베이스(DB, Database) => 데이터를 관리하는 창고 / 행과 열로 구성된 테이블에 저장해 관리
대표적인 DB 프로그램 => MySQL, 오라클, 마리아DB 등등
사용할 DB 프로그렘 => H2 DB
DB에서 자바 언어를 이해하게 해주는 것 => JPA(Java persistence API)
JPA의 핵심 도구 2가지
- 엔티티(entity) : 자바 객체를 DB가 이해할 수 있도록 만들어줌 / 이를 기반으로 테이블 작성
- 리파지터리(repository) : 엔티티가 DB 속 테이블에 저장 및 관리될 수 있게 하는 인터페이스
DTO를 데이터베이스에 저장하기(방법/과정)
1. DTO를 엔티티로 변환하기
- 프로젝트 아래에 엔티티를 관리하기 위한 entity패키지 만들기
- 새 클래서 생성(Article)
- 이 클래스가 엔티티임을 선언하기 위해 @Entity 어노테이션 붙이기
- 엔터티의 대푯값으로 사용할 @Id 어노테이션과 이를 자동으로 생성하기 위해 @GeneratedValue 어노테이션 추가
- title,content 필드를 DB에서 인식할 수 있도록 @Column 추가
- id, title, content를 포함하는 Article 생성자 추가
- DTO가 엔티티로 잘 변환되는지 확인하기 위해 toString()메서드 추가
- 엔티티로 변환하는DTO클래스에 toEntity() 메서드 생성 후 DTO객체를 엔티티로 반환(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
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 + '\'' +
'}';
}
}
2. 리파지터리로 엔티티를 DB에 저장하기
- 프로젝트 아래에 repository패키지 만들기
- 새 클래스를 만들고 Interface 파일 생성(ArticleRepository)
- 자동으로 생성된 인터페이스 뒤에 extends Crud 입력 후 JPA에서 제공하는 CrudRepository<T,ID> 선택
- . CrudRepository뒤에 <Article, Long> 붙이기
- => Article : 관리할 엔티티의 클래스 타입 / Long : 관리할 엔티티의 대푯값 타입
3.컨트롤러 수정
- DTO를 엔티티로 변환하기 위해 form객체의 toEntity() 메서드를 호출해 Article 타입의 article에 저장
- 리파지터리로 엔티티를 DB에 저장하기 위해 ArticleRepsitory 타입의 articlerepository 객체 선언
- Article 타입의 saved 객체에 articleRepository.save() 메서드를 호출해 article 엔티티를 저장
- 객체생성 없이(new) 객체를 사용하기 위해 @Autowired 어노테이션 붙이기