1. JPA(Java Persistence API)
- 자바 진영의 ORM 기술 표준으로, 인터페이스의 모음
- JPA 2.1 표준 명세를 구현한 3가지 구현체: Hibernate, EclipseLink, DataNucleus
* ORM(Object-relational mapping, 객체 관계 매핑)
- 객체는 객체대로 독립적인 설계, 관계형 데이터베이스는 DB대로 독립적인 설계
- ORM 프레임 워크가 중간에서 매핑
JPA는 애플리케이션과 JDBC 사이에서 동작하면서 DB의 특징을 몰라도 접근 가능하게끔 번역기의 역할을 한다.
2. JPA의 역할
1. SQL 중심적인 개발에서 객체 중심으로 개발
: 기존의 JDBC를 이용한 전통적인 개발에서는 SQL문을 직접 작성해야하므로, 사용하는 DB가 바뀌거나 필드값이 바뀌면 전체 코드의 SQL문을 일일히 수정해줘야했다.
JPA는 특정 코드를 사용하여 직접 SQL문을 작성해주므로 SQL 중심 개발에서 벗어날 수 있게 되었다.
2. 생산성
: 코드가 간단해져서 빠르게 개발 가능하다.
jpa.persist(member) //Create
Member member=jpa.find(memberId) //Read
member.setName("변경할 이름") //Update
jpa.remove(member) //Delete
3. 유지보수
: 필드 변경 시, 추가만 하면 SQL은 JPA가 처리
-> SQL에 의존적이지 않으므로 유지보수 용이
4. 패러다임의 불일치 해결
: 자바의 객체 상속 관계를 Table 슈퍼타입-서브타입 관계로 해결
member.setTeam(team), member.getTeam();
과 같은 객체를 직접적으로 주입하는 듯한 코드를 통해 신뢰성 확보 및 패러다임 불일치 해결
5. 성능
- 1차 캐시와 동일성(identity)보장
- 지연로딩
- 쓰기 지연
6. 데이터 접근 추상화와 벤더 독립성
7. 표준
3. JPA의 두 가지 핵심 기능
1. 영속성 컨텍스트
2. 객체와 관계형 데이터베이스 매핑(ORM)
*영속성 컨텍스트
: 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성
4. JPA 구동방식
persistence.xml에서 설정정보를 조회한 후, EntityManagerFactory를 생성하여 여러개의 EntityManager로 객체를 관리한다.
- EntityManagerFactory는 애플리케이션 전체에 하나만 생성한다.
- Entity Managersms 쓰레드 간에 공유하지 않는다.(사용 후 버림)
- JPA의 모든 데이터 변경은 트랜잭션 안에서 실행한다.
해당 포스트는 김영한님의 자바 ORM 표준 JPA 프로그래밍을 듣고, 정리한 글입니다.
https://www.inflearn.com/course/ORM-JPA-Basic#
자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의
JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런
www.inflearn.com
'Spring 인강 정리 > 자바 ORM 표준 JPA 프로그래밍 - 기본편' 카테고리의 다른 글
영속성(Persistence) 컨텍스트 란? (0) | 2022.03.03 |
---|