Kim ByeungHyun
JPA 심화 본문
ORM
- 백앤드 개발자가 로직 개발에 집중할 수있게 해줌
JPA 사용 %%유튜브 참고해보자
-영속성 컨텍트?
- Entity의 생명주기
- save() 분기처리
- 1차캐쉬
- 쓰기지연
- deleteAll()
- flush
- 변경감지 (Dirty Checking)
Youtube : https://www.youtube.com/watch?v=kJexMyaeHDs&t=925s
이거보니 이해에 도움이 되는듯하다
04. 영속성 컨텍스트 1차 캐시 이해
1차 캐시 사용 장점
- db 조회 횟수를 줄임
- 객체 동일성 보장
Entity 삭제
Entity 업데이트 방법 1,2
05. DB의 연관관계 이해
연관테이블 만들기 User, Food ==> Order / 주로 id(유일한값)값으로한다
포함관계 1:1 / 1:N / N:N
ERD설계 PK값 기준으로 / 외래키
06. JPA 연관관계
어노테이션
@OneToMany
@ManytoOne
@OneToOne
@ManyToMany
JPA 코드 구현
항상 Entity 본인 중심으로 관계를 생각!
Spting Data JPA
07. Spring Data JPA 이해
조회 생성 삭제 --> 스프링이 대신 작성
Repository 생성
기능
- 생성 save
- 전체조회 findAll
- 개수조회 count
- 삭제 delete
추가기능
- interface만 선언해 주면 , 구현은 Spring Data JPA가 대신!
- 반환형식 메서드 이름 --> jpa의 공식문서 참조
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods
08. 페이징 및 정렬 설계
페이지네이션 혹은 페이징
09. 페이징 및 정렬 구현
page - 1을 해줘야 정확한 순서로 구현 가능
pageable
정렬? 몇개? 몇번?
JPA 활용
10. 폴더기능
11. 폴더 테이블 설계
1) 폴더명
2) 회원ID
userId 가 회원 id값 이라는 사실은 일반 유저는 모른다.
회원과 폴더의 관계
회원->폴더 조회
폴더->회원 조회
12. JPA 연관관계를 이용한 폴더 테이블 설계
-회원관점
@OneToMany
List<Folder> folders = user.getFolders();
-폴더관점
@ManyToOne
folder.getUser();
객체의 관계를 맺어주면, DB의 관계 설정 맺어줌 (알아서)
-자바, SQL쿼리 >> 스프링 개발자에게 편의성을 안겨주었네
JPA 연관관계 Colum 설정방법
- @JoinColumn
>> 두가지의 옵션 : 외래키의 이름, 폴더의 존재(기본값은 flase)
13. 폴더 생성 기능 구현
생성POST - 생성할폴더명들JSON - 조회GET
-서버 구현
1) 회원의 폴더 생성
2) 회원이 저장한 폴더 조회
+@AutenticationPrincipal : 로그인한 회원의 상세 정보를 담고있는 형식 (details)
14. 관심상품에 폴더 추가 구현
폴더 전체 조회 및 선택
상품 폴더 = N:N
폴더전체조회GET - 폴더추가POST
+@Transactional :
aop의 등장? 프록시 객체의 생성?
트랜잭션 시작 -> 타겟 메서드 실행 -> 프랜잭션 종료
- 빈 생성시, @Transection 에너테이션이 있으면, 프록시 객체가 빈으로 등록된다
- 스프링이 제공하는 선언적 트랜직션 관리를 통해,
서비스 레이어에 트랜잭션 관련된 코드 혹은 특정 기술에 종속된 코드를 분리했다.
https://www.youtube.com/watch?v=taAp_u83MwA
15. 폴더 별 관심 상품 조회 구현
페이징을 이용한 구현
getProdictsInFolder : 파라미터(몇번,몇개,정렬), 폴더id, 디테일
조회
pageable
16. 폴더명 중복 피해서 폴더생성
더 찾아보면 좋을 키워드들에 대한 힌트에요!
1. JPA ORM
2. JPA Data Query, QueryDSL
++참고++
2장.
자바는 객체지향언어이고 데이터 베이스는 SQL언어이다.
둘의 패러다임의 불일치를 해결하기 위해 ORM이 존재한다. 자바의 ORM은 JPA이고
JPA는 인터페이스로, 명세서라고 할 수 있다.
이러한 JPA를 구현한 구현체가 hibernate이다.
1차캐시의 개념
꼭 알아두시고
연관관계가 어떻게 되어있는지 다시 한번 살펴보시기 바랍니다.
@OneToMany ....
페이징은 코드를 눈에 익히고, 복붙을 잘 할 수 있을 정도면 O
'Framework > Spring' 카테고리의 다른 글
예외처리 + 관심사 별로 분리 (1) | 2022.10.11 |
---|---|
AOP, 예외처리, Transaction (0) | 2022.10.11 |
Dto를 거쳐 Controller, Repository (0) | 2022.10.07 |
스프링 입문 강의를 보며 정리I (0) | 2022.10.06 |
RequestBody, PathVarialble, @Transactional, 어노테이션, Lombok (0) | 2022.10.05 |