Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Greedy
- transaction
- springdatajpa
- 스프링
- 인프런
- Thymeleaf
- 그리디
- Android
- db
- Exception
- 스프링 핵심 기능
- QueryDSL
- JDBC
- jpa
- 김영한
- spring
- http
- 백준
- 자바
- SpringBoot
- Spring Boot
- Proxy
- AOP
- 스프링 핵심 원리
- 알고리즘
- pointcut
- java
- kotlin
- JPQL
- Servlet
Archives
- Today
- Total
개발자되기 프로젝트
JPA? 본문
객체지향적으로 설계를 할 수록 관계형 DB에 매핑하기 어려워진다....뭔가 필요하다.
이에 대한 JAVA진형의 해답이 JPA
1. JPA?
- Java Persistence API
- Java ORM 기술 표준
2. ORM?
- Object Relational Mapping(개체 관계 매핑)
- 객체는 객체대로 설계
- 관계형 DB는 관계형 DB대로 설계
- ORM 프레임워크가 중간에서 매핑
3. JPA는 애플리케이션과 JDBC사이에서 동작
- Java applicartion <->JPA <->JDBC->SQL->DB
- JPA 동작 - 저장
- JPA가 객체와 관계형 데이터베이스의 패러다임 불일치 해결!
- JPA 동작 - 조회
4. JPA는 표준 명세
- JPA는 인터페이스의 모음
- JPA의 구현체가 Hibernate
5. JPA를 왜 사용해야 할까?
- SQL 중심적인 개발에서 객체 중심으로 개발
- 생산성
- 저장 : jpa.persist(member)
- 조회 : jpa.find(memberId)
- 수정 : member.setName("~~") --> JPA를 쓴다는건 자바 컬렉션에 넣었다뺐다 하는것과 유사하게.
- 삭제 : jpa.remove(member) - 유지보수
- 이전에는 필드 변경 시 모든 SQL 수정...ㄷㄷ
- JPA쓰면 필드만 추가하면됨 ㄱㅇㄷ - 패러다임 불일치 해결
- 객체와 관계형 데이터베이스의 패러다임 불일치 해결.
- 상속 : 저장할 때 쿼리 나눠서 날려줌. 조회할 때 알아서 join해서 가져옴.
- 연관관계, 객체 그래프 탐색
- 신뢰할 수 있는 엔티티, 계층
- 비교하기 : JPA는 동일한 Transaction에서 동일한 식별자로 조회한 엔티티는 같음을 보장. - 성능
- 1차 캐시와 동일성 보장
* 같은 트랜젝션 안에서는 같은 엔티티를 반환
* DB Isolation Level이 Read Commit이어도 애플리케이션 Repeatable Read 보장.
- Transaction을 지원하는 쓰기 지연
* Transaction을 commit할 때 까지 Insert SQL모음
* JDBC BATCH SQL 기능을 사용해서 한번에 SQL 전송
- 지연 로딩(Lazy Loading), 즉시로딩
* 지연 로딩 : 객체가 getter로 실제 사용될 때 로딩(LAZY)
* 즉시 로딩 : JOIN SQL로 한번에 연관도니 객체까지 미리 조회(EAGER) - 데이터 접근 추상화와 벤더 독립성
- 표준
'인프런 > [인프런] 자바ORM 표준 JPA 프로그래밍' 카테고리의 다른 글
플러시, 준영속 상태, 정리 (0) | 2021.08.08 |
---|---|
영속성 컨텍스트 2 (0) | 2021.08.08 |
영속성 컨텍스트 (0) | 2021.08.08 |
Hello JPA (0) | 2021.08.08 |
JPA 시작, 프로젝트 세팅 (0) | 2021.08.07 |
Comments