티스토리 뷰

Spring/JPA

JPA

zzangyeon 2021. 8. 24. 00:26

왜 사용해야 하는가?

1. SQL 중심적인 개발 -> 객체 중심으로 개발

2. 생산성

3, 유지보수

4. 패러다임의 불일치

 

JPA와 상속

자바 컬렉션에 넣고 꺼내 쓰는것 처럼.

객체 그래프를 자유롭게 탐색할 수 있다.  = 엔티티를 신뢰할 수 있다. 

동일한 트랜잭션에서 조회한 엔티티는 같음을 보장한다.!

 

JPA 성능 최적화 기능

1. 1차 캐시와 동일성(identity)보장

2. 트랜잭션을 지원하는 쓰기 지연(transactional -write behind)

3. 지연로딩과 즉시 로딩

 

ORM은 객체와 RDB 두 기둥위에 있는 기술!

두 기둥을 잘  알아야 한다!

====================================================

JPA는 트랜잭션이라는 단위가 아주 중요하다! 

 

결국 현업에서 개발의 고민은 무엇인가

JPQL이라는 것이 그 고민을 해결해준다!

 

JPA에서 가장 중요한 2가지!

1. 객체와 관계형 데이터베이스 매핑하기

2. 영속성 컨텍스트

 

*영속성 컨텍스트

엔티티를 영구 저장하는 환경 이라는 뜻

EntityManager.persist(entity); - 디비에 저장하는 것이 아니라 entity를 영속성 컨텍스트에 저장하는것!

논리적인 개념

눈에 보이지 않는다.

엔티티 매니저를 통해 영속성 컨텍스트에 접근한다.

 

*엔티티의 생명주기

비영속, 영속, 준영속, 삭제

 

*영속성 컨텍스트의 이점

1차 캐시

동일성 보장

쓰기지연 SQL 저장소

버퍼링 - 모아서 write! 하는 

더티체킹(변경감지)

 

 

 

DDL생성가능!

 

 

 

'Spring > JPA' 카테고리의 다른 글

JPQL 표현 및 3개 이상의 테이블 JOIN하기  (0) 2022.02.23
JPQL Join 과 Fetch Join 의 차이  (0) 2021.11.06
fetch join  (0) 2021.09.24
JPA2  (0) 2021.09.08
SQL 중심 개발의 문제점  (0) 2021.08.23
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함