728x90
Server에서 넘겨주는 언어는 Java, DB에서 사용하는 언어는 SQL
따라서 DB는 자바를 이해하지 못하는데, 이를 위한 도구가 JPA이다.
JPA에는 Entity와 Repository가 있는데
Entity는 Java객체(DTO)를 DB가 이해할 수 있는 규격화된 데이터인데
Repository라는 일꾼을 통해서 DB에게 전달되고 처리된다. == DB속 데이블에 관리되는 것
* 학습목표
DTO를 (Controller)를 거쳐 Entity로 변환 후 Repository 통해서 save() -> DB까지 저장시키는 과정.
1. 처리흐름 개요.
- DTO를 변환! Entity로!
form.toEntity() 라는 메서드로 호출하여
Article article이라는 타입의 엔티티로 반환해오는 작업
Article article = form.toEntity();
- Repository에게 Entity를 DB안에 저장하게 함!
2-1. 엔티티로 변환
Article class를 추가
package 생성 -> entity/Article.java
여기에 DTO랑 거의 똑같음. title이랑 content를 받을껀데,
@entity라는 어노테이션을 붙혀줘야 DB가 해당 객체를 인식 가능!
DB가 이해할수 있게 객체에 @column이라고 명시해줌.
DB에서 관리하는 테이블이라는 단위에 연결되게 만들어준것.
private Long id;
대표값을 넣어줘야함. @id // 대표값을 지정! like a 주민등록번호
@GeneratedValue // 1, 2, 3, ... 자동 생성 어노테이션.
2-2. 변환 메소드 추가
toEntity(); 해당 메서드를 만들어야함.
DTO 메서드로 이동하면 toEntity 메서드를 만들어줌.
return new Article(id: null, title, content);
반환을 해줌 엔티티인 Article 객체를.
3. 데이터 저장하기.
Article saved = articleRepository.save(article);
return "";
articleRepository가 save할껀데 무엇을? 위에서 만든 article 데이터를
무엇으로 반환할것이냐? Article 엔티티 타입으로 saved라는 이름으로 반환시킨다.
articleRepository객체를 사용하기 위해 필드에
private ArticleRepository articleRepository; 선언
3-1. 리파지터리 작성
package 생성 -> repository/ArticleRepository(인터페이스)
public interface ArticleRepository extends CrudRepository<Article, Long>
ArticleRepository는 CrudRepository가 제공하는 기능들을 정의없이 그냥 사용할수 있음.
<Article, Long> <관리대상, 대표값의 타입>
필드부분에 @Autowired을 사용하면
@Autowired // 스프링 부트가 미리 생성해놓은 객체를 가져다가 자동 연결!
private ArticleRepository articleRepository;
4. 데이터 저장 확인.
ArticleForm{title='가가가가가', content='나나나나나'}
ArticleForm{title='가가가가가', content='나나나나나'}
Article{id=1, title='가가가가가', content='나나나나나'}
Article 내용에 id=1 값이 생긴 결과를 알 수 있다.
https://github.com/Giltaehyeong/firstproject/commit/647cad4b33b094c94f7985979d8a802f848007fa
[스프링 부트 입문 08]데이터 생성 with JPA · Giltaehyeong/firstproject@647cad4
Server에서 넘겨주는 언어는 Java, DB에서 사용하는 언어는 SQL 따라서 DB는 자바를 이해하지 못하는데, 이를 위한 도구가 JPA이다. JPA에는 Entity와 Repository가 있는데 Entity는 Java객체(DTO)를 DB가 이해할
github.com
소스코드참고.
https://www.youtube.com/channel/UCpW1MaTjw4X-2Y6MwAVptcQ
홍팍
클라우드 스터딩 채널 Cloud Studying Channel https://cloudstudying.kr
www.youtube.com
728x90
'Back-End > SpringBoot' 카테고리의 다른 글
| [스프링 부트 입문 10]롬복과 리팩터링 (0) | 2022.05.03 |
|---|---|
| [스프링 부트 입문 09]DB 테이블과 SQL (0) | 2022.05.03 |
| [스프링 부트 입문 07]폼 데이터 주고 받기 (0) | 2022.05.03 |
| [스프링 부트 입문 06]뷰 템플릿과 레이아웃 (0) | 2022.05.03 |
| [스프링 부트 입문 05]MVC의 역활과 실행 흐름 (0) | 2022.05.03 |