- Java Persistence API
- 자바 진영의 ORM 기술 표준
- JPA는 기존에 우리가 직접 썼던 JDBC API를 날렸던걸 대신 사용하여 데이터를 주고받는다.
API
- Application Programming interface 정해진 인터페이스로 프로그래밍하여 프로그램을 만들 수 있는 도구
ORM이란?
- Object-relational mapping (객체 관계 매핑)
- 객체는 객체대로 설계
- 관계형 데이터베이스는 관계형 데이터베이스대로 설계
- ORM 프레임워크가 중간에서 매핑
- 대중적인 언어에는 대부분 ORM 기술이 존재
JPA를 사용하는 이유
1. 생산성이 좋아진다.
- 저장 : jpa.persist(member)
- 조회 : Member member = jpa.find(memberId)
- 수정 : member.setName("멤버이름")
- 삭제 : jpa.remove(member)
2. 유지보수가 용이하다.
- 컬럼이 추가되거나 하면 컬럼을 직접 수정해야 했지만 JPA는 컬러만 추가하면 다 적용이 된다.
3. JPA와 패러다임의 불일치 해결
- 상속이나 조인되어 있는 구조도 알아서 CRUD를 해결해줌
4. JPA와 연관관계, 객체 그래프 탐색
5. 신뢰할 수 있는 엔티티, 계층
6. JPA와 비교하기
- 동일한 트랜젝션에서 조회한 엔티티는 같음을 보장
7. JPA의 성능 최적화 기능
- 1차 캐시와 동일성 보장
ㅇ 같은 트랜잭션 안에서는 같은 엔티티를 반환
ㅇ 다른 인스턴스로 같은 값을 두 번 불러올 때,
첫 번째 불러오는 값은 SQL에서 불러오고 두 번째는 캐시에서 불러옴
- 트랜잭션을 지원하는 쓰기 지연 - INSERT
ㅇ 트랜잭션을 커밋할 때까지 INSERT SQL을 모음
ㅇ JDBC BATCH SQL 기능을 사용해서 한 번에 SQL 전송
- 지연 로딩
ㅇ 객체가 실제 사용될 때 로딩
- 즉시 로딩
ㅇ JOIN SQL로 한 번에 연관된 객체까지 조회
JPA가 사용되는 예시
foreign key가 존재하는 두 테이블vo를 따로 서서 연결하는게 아닌 둘 중 한 테이블 vo에 다른 테이블vo를 object형식으로 필드부에 선언한 것을 데이터베이스와 연결 될 때 foreign key를 알아서 찾아 데이터를 찾아줌
'[Spring Boot] 스프링부트 (IntelliJ) > JPA' 카테고리의 다른 글
[JPA] CascadeType 영속성 전이 (0) | 2024.03.27 |
---|---|
[JPA] 엔티티 설계시 주의점 (0) | 2024.03.27 |
[JPA] Mysql JPA 테이블 추가하기 (0) | 2024.02.22 |
[JPA] 인텔리제이에서 간단하게 JPA 돌려보기 (0) | 2024.02.21 |
[JPA] ORM (0) | 2024.02.07 |