반응형
1-3. ORM 이란? JPA 소개
https://www.inflearn.com/course/ORM-JPA-Basic/dashboard
http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9788960777330
정리 :
* JPA의 이점
1) SQL에서 객체 중심적인 개발로 변경하여 패러다임의 불일치 해결
2) 단순 CRUD 작업을 하지 않아 코드 생산성 증가
3) 기존 필드 변경시에 수행하면 작업들을 하지 않아 유지보수성 증가
1. ORM이란?
- Object-relational Mapping (객체 관계 매핑)
- 객체는 객체대로 설계
- 관계형 데이터베이스는 관계형 데이터베이스 대로 설계
- ORM 프레임워크가 중간에서 매핑
- 대중적인 언어에는 대부분 ORM 기술이 존재
2. JPA의 동작
패러다임의 불일치 해결
- Insert
JPA의 Entity 분석
Insert SQL JPA가 생성
JDBC API사용
- select
Select SQL 생성
JDBC API 사용
ResultSet 매핑
3. JPA란
- Jpa 자체 는 표준의 명세이다.
- 인터페이스 모음
- *Hibernate, EclipseLink, DataNucleus
3. JPA 를 왜 사용해야 하는가?
- SQL->객체 중심적인 개발
- 생산성
- 저장 : jpa.persist()
- 조회 : jpa.find(id)
- 수정* : obj.setName()
- 삭제 : jpa.remove
- 유지보수
- 기존은 필드 변경 시 VO와 SQL 모두 CRUD 수정
- 패러다임의 불일치 해결
- 상속
- jpa.persist() 함수만 실행
- 내부적인 insert 작업은 알아서 실행해준다
- ex) persis(album); => insert into item / insert into album
- ex) find(album.class, id) => select from item join album
- 연관관계
- 객체 그래프 탐색
- 신뢰할 수 있는 엔티티와 계층
- member.getTeam() 하는 순간에 sql로 조회한다.
- 비교
- 동일한 트랜잭션에서 조회한 엔티티는 같음을 보장
- 상속
- 데이터 접근 추상화와 벤더 독립성
- 성능
- 1차 캐시와 동일성(identity) 보장
- 같은 트랜잭션 안에서는 같은 엔티티를 반환 : 컈싱으로 조회 성능 향샹 ( sql은 1번만 실행 )
- DB Isolation level 이 read commit 이어도 애플리케이션에서 repeatable Read 보장 (?)
- 트랜잭션을 지원하는 쓰기 지연 (transactional write-behind)
- 트랜잭션을 Commit할 때까지 INSERT SQL을 모음 (transation.start() => transation.commit())
- JDBC Batch SQL 기능을 이용해서 한번에 SQL 전송
- 즉시 로딩과 지연 로딩 (lazy loading)
- 지연 로딩 : 객체가 실제 사용될 때 로딩
- 즉시 로딩 : Join sql로 한번에 연관된 객체까지 미리 조회
- 지연 로딩으로 개발 후 즉시 로딩으로 최적화
- 1차 캐시와 동일성(identity) 보장
- 표준
반응형
'Develope > DataBase' 카테고리의 다른 글
[JPA] 영속성 컨텍스트 (0) | 2021.08.12 |
---|---|
[JPA] Spring + MariaDB + JPA 환경셋팅 (0) | 2021.06.23 |
[JPA] SQL을 직접 다룰 때 발생하는 문제점 (0) | 2021.05.29 |
[JPA] JPA 현황 및 분석 (0) | 2021.05.29 |
[ORACLE] 동적 WHERE 쿼리 (trim prefix="WHERE" prefixOverrides="AND |OR ") (0) | 2018.12.26 |