지나공 : 지식을 나누는 공간
JPA 1 : JPA의 편리함 본문
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을 통해 연관객체까지 미리 조회)
'Tech > JPA' 카테고리의 다른 글
JPA 5 : 프록시(Proxy)란? 지연로딩(LAZY), 즉시로딩(EAGER), N+1문제 (0) | 2020.10.20 |
---|---|
JPA 4 : @GeneratedValue 기본키 매핑 전략 정리 (0) | 2020.10.14 |
JPA 3 : 데이터베이스 스키마 자동생성 기능 (0) | 2020.09.21 |
JPA 2 : 영속성 컨텍스트(Persistence Context)란? - (EntityManager, EntityFactory, Flush, transactional write behind) (0) | 2020.09.10 |
JPA 0 : JPA를 사용하는 이유, 용도 (0) | 2020.09.08 |