Mission
JPA를 활용하여, DB에 데이터를 생성하시오
0. JPA,Entity, Repository
1.처리 흐름개요
- 순서 1.DTO를 변환! Entity로
Article article = form.toEntity();
form.toEntity() 라는 메서드로 호출하여
Article article이라는 타입의 엔티티로 반환해오는 작업
Article article = form.toEntity();
- 순서 2.Repository에게 Entity를 DB안에 저장하게 함 (3. 데이터 저장하기)
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 생성 어디에? controller에 repository/ArticleRepository(인터페이스)로 !
상속! public interface ArticleRepository extends CrudRepository<Article, Long>
ArticleRepository는 CrudRepository가 제공하는 기능들을 정의없이 그냥 사용할 수 있다
<Article, Long> <관리대상, 대표값의 타입>
3-2 객체 주입하기 (DI)
필드부분에 @Autowired을 사용하면
@Autowired // 스프링 부트가 미리 생성해놓은 객체를 가져다가 자동 연결시켜준다.!
private ArticleRepository articleRepository;
4.데이터 저장확인
Article 내용에 id=1 값이 생긴 것을 알 수 있다.
- 0. JPA,Entity, Repository
java 언어를 DB가 이해할 수 있게 해줄뿐 아니라 데이터 관리에 편리한 여러 기능들까지 제공한다.
JPA 의 핵심도구로는 Entity 와 Repository가 있다. (위 그림 참고)
- Entity
java 객체를 DB가 이해할 수 있게 잘 규격화된 데이터이다.
- Repository
이러한 Entity는 Repository 라는 일꾼을 통해서 DB에게 전달되고 처리된다. DB속 테이블에 관리되는 거다.
(아랙 그림 참고)
🔥 구글링 훈련하기
- JPA 개념
- JPA 리파지터리란
- JPA Entity 사용법
- @Entity
- @Table
- @Id
- @GeneratedValue
- @Column
- DTO Entity 분리 장점
- JPA CrudRepository
- @Autowired
내용참고
https://www.youtube.com/channel/UCpW1MaTjw4X-2Y6MwAVptcQ
'Spring Boot > Spring Boot 입문 홍팍' 카테고리의 다른 글
[Spring boot] (10) 롬복과 리팩터링 (0) | 2023.08.06 |
---|---|
[Spring boot] (9) DB 테이블과 SQL (0) | 2023.08.06 |
[Spring boot] (7) 폼 데이터 주고받기 (0) | 2023.07.31 |
[Spring boot] (6) 뷰 템플릿과 레이아웃 (0) | 2023.07.31 |
[Spring boot] (5) MVC의 역할과 실행 흐름 (0) | 2023.07.31 |