ORM(Object-Relational Mapping)
객체와 관계형 DB를 매핑
- ORM 프레임 워크를 사용시, 객체를 마치 자바 컬렉션에 저장하듯 저장 O
- ORM 프레임워크가 적절한 SQL를 생성해서 DB에 객체를 저장
HIBERNATE
Java 진영의 다양한 ORM 프레임워크 중 가장 많이 사용되는 프레임워크
- Hibernate기반으로 만들어진 ORM 기술 표준 = JPA
JPA (Java Persistence API)
자바 진영의 ORM 기술 표준 ORM for JAVA
JPA가 제공하는 API를 사용하면, 객체를 DB에 저장하고 관리할 때, 개발자가 직접 SQL를 작성 X
JPA가 개발자 대신, SQL을 생성해서 DB에 전달 & 객체를 자동으로 Mapping해줌
JPA는 내부적으로 JDBC API를 활용함
JDBC API
JAVA 프로그래밍 언어와 다양한 DB SQL 또는 테이블 형태의 데이터 사이에 독립적인 연결을 지원하는 표준
⇒ 다양한 형태의 관계형 DB에 접속하여 JAVA 프로그래밍 언어와 DB사이에 데이터를 주고받을 수 있도록 지원하는 표준 자바 응용 프로그래밍 인터페이스
개발자가 직접 JDBC API를 활용시, 패러다임 불일치 & SQL 의존성 등으로 인해 효율성 떨어짐
∵ JPA를 활용 ⇒ SQL를 자동적으로 해결해줌
왜 사용해야하는가 ?
SQL 중심적인 개발에서 객체 중심으로 개발
생산성
유지보수
만약 tel이란 컬롬이 추가되면, SQL다시 업데이트해야함
BUT JPA는 필드만 추가하면됨 ⇒ SQL은 JPA가 알아서 처리해줌
패러다임의 불일치 해결
- JPA 와 상속
성능
JPA의 성능 최적화
1차 캐시와 동일성 보장
같은 트랜잭션 안에서는 같은 엔티티를 반환
트랜잭션을 지원하는 쓰기 지연(transactional write-behind)
지연로딩
멤버를 조회할 때 한번에 팀 조회 = 즉시 로딩
멤버를 조회할 때 팀 조회 매우 적음 = 지연로딩
⇒ 연관된 걸 바로 땡겨올 필요 없음 (진짜 객체가 조회/사용 될 때 땡겨오기)
데이터 접근 추상화와 벤더 독립성
표준
'BACKEND > JAVA & SPRING' 카테고리의 다른 글
DAO DTO Repository (0) | 2023.05.19 |
---|---|
Servlet(서블릿) (0) | 2023.05.18 |
[J2KB] 회원관리 (1) | 2023.02.17 |
[J2KB] API (0) | 2023.02.10 |
[J2KB] MVC와 템플릿 엔진 (1) | 2023.02.10 |