지나공 : 지식을 나누는 공간

JPA 1 : JPA의 편리함 본문

Tech/JPA

JPA 1 : JPA의 편리함

해리리_ 2020. 9. 8. 22:29

JPA란?

- Java Persistence API, 자바 진영의 ORM 기술 표준

- 인터페이스의 모음으로 Hibernate, EclipseLink, DataNucleus의 구현체

 

ORM이란?

Object-relational mapping, 객체 관계 매핑으로, 객체는 객체대로 설계하고 관계형데이터베이스는 관계형데이터베이스로 설계하면 orm 프레임워크가 중간에서 매핑하는 방식임.

 

JPA와 CRUD - 마치 java 컬렉션에 넣은 채 쓰는 듯한 편리함!

- 저장 : jpa.persist(member) //영구저장한다는 의미

- 조회 : Member member = jpa.find(memberId)

- 수정 : member.setName("변경할 이름")

- 삭제 : jpa.remove(member)

 

패러다임의 불일치를 해결하는 JPA

- 조회 시 편리함 : 

만약 두 테이블이 연관관계를 가져서 Album이라는 객체를 두 테이블에 넣어야 할 때, 개발자가 Album album = jpa.find(Album.class, albumId); 라고만 코딩하면 jpa가 알아서 두 테이블에 들어가도록 sql문을 실행한다.

이 때의 sql은 select I.*, A.* from item I join Album a on I.item_id = a.item_id; 이 된다.

 

- 동일한 트랜잭션에서 조회한 엔티티는 같음을 보장한다.

 

JPA를 통한 성능향상

- 1차 캐시와 동일성 보장 ( 동일한 트랜잭션일 때 같은 엔티티에 대한 두 번의 조회를 하나의 SQL문으로 수행해서 캐싱)

- 트랜잭션을 커밋할 때까지 INSERT문을 모아서 JDBC BATCH SQL 기능을 통해 한번에 SQL을 전송한다.

- 지연로딩(객체가 실제 사용될 때 로딩)과 즉시로딩(join sql을 통해 연관객체까지 미리 조회)

728x90
Comments