카테고리 없음
2024. 8. 6. (화) 슈퍼코딩 부트캠프 Day 58 / 주특기 7주차
태영9922
2024. 8. 6. 21:48
1. JPA Repository 기본 메소드 이용하기
![](https://blog.kakaocdn.net/dn/eVQshi/btsIWenumbo/t4DrNAx15pyMvEeh6lMjWK/img.png)
- JPA Entity 더티 체킹으로 업데이트 하기
![](https://blog.kakaocdn.net/dn/dU73E7/btsIUUDmQiZ/tOztgHvEUVhqXN0N6eyX7k/img.png)
- JPA Repository 자동 쿼리 메소드 이용하기
![](https://blog.kakaocdn.net/dn/cnH4c0/btsIVJOUsui/1r6QhSi2soJMpxqk4L0vsk/img.png)
![](https://blog.kakaocdn.net/dn/c7PBYR/btsIXuW5UFX/1ocY7Awbi4rIVI9zAvq3e1/img.png)
- JPA Pagination 구현하기(쉽게 말해서 페이지 나누기)
![](https://blog.kakaocdn.net/dn/dzZRPw/btsIW3rYOKq/uFvk9akekBm8j3PYwQmTD1/img.png)
1. JPa Entity 관계 매핑하기
- 매핑할때 고려할 3가지
![](https://blog.kakaocdn.net/dn/cwzDMI/btsIUwQgg7a/9bRvyVMTUvGw5S0ugQ6dd1/img.png)
- <다중성>
- 다대일 관계
![](https://blog.kakaocdn.net/dn/cEwtAK/btsIWS5kjTg/70yj9Yjt1Soh9aTTy1ZyrK/img.png)
- 일대다 관계
![](https://blog.kakaocdn.net/dn/biiJrR/btsIWxf08ne/9cLVl4lkwoQrkD6bnoAXN0/img.png)
- 일대일 관계
![](https://blog.kakaocdn.net/dn/kASy4/btsIWUhJOZI/rcM8K0qjpHL2ONU78mB57K/img.png)
- 다대다 관계
![](https://blog.kakaocdn.net/dn/bD8mPJ/btsIXmLCHlS/WkTf9ZaIBq42ayqCKN6sxk/img.png)
- <방향성>
- 다대일 단방향
![](https://blog.kakaocdn.net/dn/SvQNq/btsIWhRWpcY/31srRF7Dr3lV8TqetPTrFk/img.png)
- 다대일 양방향
![](https://blog.kakaocdn.net/dn/G55VN/btsIWP8AhFt/dZikPU61nDY7PccxeXbD11/img.png)
- 양방향 관계에서 주인 정하기
![](https://blog.kakaocdn.net/dn/djtk0T/btsIVGEKOPH/g7VXWTomz8QchDydTL1oJk/img.png)
![](https://blog.kakaocdn.net/dn/cqIUgc/btsIXv2KYjO/DfNvpgs3byYlR49dbukEO0/img.png)
2. JPA Fetch 정책과 JPQL 사용하기
- 연관 객체 들고오기
![](https://blog.kakaocdn.net/dn/nKPPm/btsIUDhyFra/pcYcl4spiIEb2xD8l07ff1/img.png)
![](https://blog.kakaocdn.net/dn/ncVEG/btsIVEUw77U/v0krrCRwpA00ZKYifjKqKK/img.png)
![](https://blog.kakaocdn.net/dn/GRqiD/btsIW5XDdn9/lmK2p3tIKsUT0mz9oVcUAK/img.png)
![](https://blog.kakaocdn.net/dn/OJoET/btsIUNdlbtZ/GKnILlCZgjNkQ4OjC7ZAI0/img.png)
- JPQL(Java Persistence Query Language) : 자바의 객체지향 쿼리
![](https://blog.kakaocdn.net/dn/R5Fas/btsIV4rO107/wanj7KzOBKDHtBiteZbZmK/img.png)
3. JPA N+1문제
- N+1문제란 ? 연관 관계가 설정된 Entity 조회 시 조회된 갯수 만큼 조회 쿼리가 추가로 실행되는 현상
![](https://blog.kakaocdn.net/dn/B7idR/btsIUSFzihh/KUsUg4v46dvVHC6sxsWvdk/img.png)
- Fetch Join 으로 해결
![](https://blog.kakaocdn.net/dn/P32kd/btsIVc4Yl2f/FafGIEE4RocTwexmxbIlXk/img.png)
4. JPA와 Spring PSA
- PSA(=Portable Service Abstraction) : 휴대용 서비스 추상화
- 특정 기술에 접근하는 것이 아닌 스펙을 추상화 해서 사용할 수 있도록 하는 방법 -> 코드 이식성과 유연성 확보
![](https://blog.kakaocdn.net/dn/37mDJ/btsIWQNbKNK/NJNJhSHWHOnjIR52S6F4x1/img.png)
- 문제 : RDB마다 SQL이 조금씩 다르다
![](https://blog.kakaocdn.net/dn/bs0ZXC/btsIWTwo3Mv/auNn8rxs8w0MZUQCT1ViX1/img.png)
- JPA는 여러 DB의 기술을 추상화하여 사용한다.
![](https://blog.kakaocdn.net/dn/5cO3r/btsIUJhGD8N/yejyhVgSiITSv5A1kEN2F1/img.png)
- JPA사용 중 DB 기술이 바뀔 경우 ->
![](https://blog.kakaocdn.net/dn/dyZiyd/btsIWVVaHdN/cknCh021Jjg150hqhZXShk/img.png)
- PSA는 결국 특정 기술에 얽매이지 않는 코드 철학을 의미한다.
![](https://blog.kakaocdn.net/dn/BlAe9/btsIUKAW581/fvdrz5CbrOrkaBtflGGoZK/img.png)
#슈퍼코딩, #1:1관리형부트캠프, #백엔드, #backend, #백엔드공부, #개발공부, #백엔드개발자 #취준일기, #취준기록, #취뽀, #빡공, #HTML/CSS, #javascript, #react , #java, #spring