JAVA : 객체지향 언어
DB: 관계형 DB ( oracle, MySQL, .. )
-> 객체를 관계형 DB에 관리
-> SQL 중심의 개발 -> 무한 CRUD 반복
패러다임의 불일치
객체 vs 관계형DB
*객체와 관계형 DB의 차이
1. 상속
2. 연관관계
- 객체는 참조를 사용 ex. Member.getTeam()
- 테이블은 외래키 사용 ex. JOIN ON member.member_id = team.team_id
3. 데이터 타입
- 객체 모델링은 자바컬렉션에서 관리 가능
- 객체를 테이블에 맞추어 모델링/ 테이블에 맞추어 객체를 저장해야 한다.
4. 데이터 식별 방법
-> 객체를 자바 컬렉션애 저장하듯이 DB를 저장할 기술이 필요하다.
JPA ( Java Persistence API) : 자바 진영의 ORM 기술 표준
ORM (Object - relational mapping ) : 객체 관계 매핑
- 객체는 객체대로 설계
- 관계형DB는 관계형DB대로 설계
- ORM프레임워크가 중간에서 매핑
- 대중적인 언어에는 대부분 ORM이 존재
JPA의 저장할때 동작.
* JPA의 필요성
1. SQL 중심적인 개발에서 객체 중심으로 개발 가능
2. 생산성
- 저장 : jpa.persist(member)
- 조회 : jpa.find(memberId)
- 수정 : member.setName("변경할아이디")
- 삭제 : jpa.remove(member)
3. 유지보수
- 기존 : 새로운 필드 추가 시, 모든 SQL 수정 필요
- JPA : 필드만 변경하면 됨. SQL은 JPA가 처리.
4. 패러다임의 불일치 해결
- JPA와 상속
- JPA와 연관관계
- JPA와 객체 그래프 탐색
- JPA와 비교하기
5. 성능
- 1차 캐시와 동일성(identity) 보장
- 트랜잭션을 지원하는 쓰기 지연
insert : 트랜잭션을 커밋할때까지 insert SQL을 모아서 JDBC BATCH SQL 기능으로 한번에 SQL 전송
update, delete : 트랜잭션 커밋할때까지 update, delete 실행하고 바로 커밋
- 지연로딩
지연로딩 : 객체가 실제 사용될 때 로딩
즉시로딩 : JOIN SQL로 한번에 연관된 객체까지 미리 조회
6. 데이터 접근 추상화와 벤더 독립성
7. 표준
-> ORM은 객체와 RDB 두 기둥위에 있는 기술이다.
(해당 글은 인프런- 자바 ORM 표준 JPA 프로그래밍 수업 및 제공되는 자료를 바탕으로 작성하였습니다. )
'Spring > 자바 ORM 표준 JPA프로그래밍' 카테고리의 다른 글
고급매핑 : 상속관계 매핑 /@MappedSuperclass (0) | 2022.05.10 |
---|---|
다양한 연관관계 매핑 (0) | 2022.05.08 |
연관관계 매핑 기초 (0) | 2022.05.07 |
엔티티 매핑 (0) | 2022.05.06 |
영속성 컨텍스트 (0) | 2022.05.05 |