컨트롤러(예: ArticleController)에서 DTO => Entity => DB 처리를 할 수 있다
① 폼데이터를 DTO에 저장하는 (예: @PostMapping) 메서드에서 dto.toEntity()하여 Entity객체로 저장한다. 예제에서는 Dto (ArticleForm)을 Entity (Article)로 toEntity()했다.
② Entity객체를 DB에 저장한다. 일단 Entity객체가 DB에 저장될 수 있도록 Entity객체에는 @Column 어노테이션이 존재한다. 아무튼 이 Entity객체는 대표값인 id 필드를 가지고 있고 id는 @GenerateValue에 의해 부여된다. 이러한 Entity객체는 Repository에 의해 id를 부여받고 DB에 저장될 수 있다.
* 뒤에서 배우지만 @GenerateValue 아무 설정 없이 사용하면 발생가능한 문제 :
given : 더미데이터 id = 1, 2, 3이 처음부터 들어와있을 때
when : 데이터를 맨처음 새로 create할 경우
then : id값 1이 중복되어 오류가 난다
그래서 이후실습에서는 @GeneratedValue(strategy = GenerationType.IDENTITY) 설정을 넣는다.
자동생성 전략을 DB가 알아서 id를 적절히 부여하는 방식으로 설정하는 것이다.
@Entity
: DB가 해당 객체를 인식가능하도록 한다. DB는 Entity를 인식한다.
: 즉 해당 클래스로 DB 테이블을 만든다.
반응형
'web +a' 카테고리의 다른 글
스프링부트 ~10 | lombok (0) | 2022.07.19 |
---|---|
스프링부트 ~9 | DB 조회 (0) | 2022.07.19 |
폼데이터를 DB에 저장하기1 (client => server) | 폼데이터를 DTO에 저장 (0) | 2022.07.17 |
스프링부트 ~06 | 레이아웃 템플릿도 만들 수 있다 (0) | 2022.07.17 |
스프링부트 ~04 | 뷰템플릿 (0) | 2022.07.17 |