ORM
JPA
JPA 소개
JPA 사용하는 이유?
JPA 성능 최적화 기능
같은 트랜잭션 안에서 같은 엔티티를 반환(조회 성능 향상)
String memberId = "100";
Member m1 = jpa.find(Member.class, memberId);
// SQL 조회 쿼리문으로 DB 까지 다녀와서 반환
Member m2 = jpa.find(Member.class, memberId);
//JPA 내부 캐시에서 바로 해당하는 객체를 반환
// 즉 SQL 1번만 실행하는 결과
printf(m1 == m2) //true
- 2. 트랜잭션을 지원하는 쓰기 지연
- INSERT의 경우
- 1) 트랜잭션 커밋까지 INSERT SQL을 모아서
- 2) JDBC BATCH SQL 기능을 사용해 한번에 SQL을 전송한다.
커밋하는 순간 데이터베이스에 INSERT SQL을 모아서 보내므로 성능이 향상된다.
- 3. 지연로딩(Lazy Loading)
- 1) 지연로딩
- 조회시, 멤버만 조회하는 것으로 이때 필요한 hasing 관계인 team을 조회하는 것이 필요하면, 그때 연관시키는 것이다.
- JPA 개발할 때는 지연로딩으로 세팅해주는 것이 일반적이다.
- 2) 즉시로딩
- 조회시, Member에 연관관계로 있는 Team을 JOIN 쿼리문으로 연관된 객체까지 한번에 조회하는 것을 말한다.
- 개발할 때 사용하지 않을 가능성이 있으므로 성능이 조금 떨어질 수 있다.