SPRING
[SPRING] JPA란
혀내
2022. 7. 24. 14:11
반응형
JPA
JPA(Java Persistence API)란 자바 진영의 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음을 의미한다.
ORM
ORM은 Object-Relational Mapping의 줄임말로 객체는 객체대로, 관계형 DB는 관계형 DB대로 설계하되 ORM 프레임워크가 중간에서 둘을 매핑해준다. Java와 같이 대중적인 언어에는 대부분 ORM 기술이 존재한다.
ORM을 사용하면 개발자는 데이터베이스의 데이터를 객체처럼 관리할 수 있기 때문에 객제 지향적인 코드를 작성할 수 있다. 비즈니스 로직에 더 집중할 수 있으며 SQL을 사용하는 것에 비해 직관적이고 유지보수가 쉬워진다.
JPA의 성능 최적화 기능
1차 캐시와 동일성(Identity) 보장
- 같은 트랜잭션 안에서는 같은 엔티티를 반환한다.
String memberId = "100";
Member m1 = jpa.find(Member.class, memberId); // SQL로 조회된 Member
Member m2 = jpa.find(Member.class, memberId); // 캐시에서 조회된 Member
println(m1 == m2) // true
위의 코드에서는 결과적으로 SQL이 1번만 실행된다.
트랜잭션을 지원하는 쓰기 지연(Transactional Write-Behind) - INSERT
- 트랜잭션을 커밋할 때까지 INSERT SQL을 모은다.
- JDBC BATCH SQL 기능을 사용해 모아둔 SQL을 한번에 전송한다.
transaction.begin();
em.persist(memberA);
em.persist(memberB);
em.persist(memberC);
// INSERT SQL을 계속 모아둔 상태
// 커밋할 때 DB에 INSERT SQL을 모아서 보낸다.
transaction.commit();
지연 로딩(Lazy Loading) & 즉시로딩
- 지연 로딩: 객체가 실제로 사용될 때 로딩된다.
- 값이 실제로 필요한 시점에 JPA가 SELECT 쿼리를 날리기 때문에 성능을 향상 시킬 수 있다.
- 대부분 지연 로딩으로 설정하고, 성능 최적화가 필요할 때 옵션을 변경한다.
- 즉시 로딩: JOIN SQL로 한번에 연관된 객체까지 미리 조회한다.
참조:
자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의
JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런
www.inflearn.com
반응형