spring layer의 마지막 DB와 통신하는 DataAccess Layer.
@Controller
@Service
@Repository : DataAcessLayer(Persistence) - JPA spring에서 권장하는 db통신 기법
JPA(Java Persistence API, Jakarta Persistence)
- Java진영에서 사용하는 ORM 기술의 표준 사양(java interface) → 구현체는 따로 있음
- JPA 구현체 : Hibernate ORM, EclipseLink, DataNucleus 등
- ORM : Object(=자바)-relational(=RDBMS) mapping
- db통신을 할 수 있는 java제공 도구(db통신을 자바스럽게 하게 도움을 줌)
db↔ JDBC ↔ (hibernate) ↔ JPA ↔ spring data JPA
- JDBC : 접속정보를 담은 클래스를 가지고 객체를 만들면 db와 통신할 수 있도록 커넥션을 만들어 줌 → 커넥션 객체에 string타입으로 퀴리를 직접 작성 ⇒ Low level 코드작성이 필요하고, 품질유지 및 객체지향적이지 못함
- JPA : JDBC 통신방식 위에 JPA Layer를 쌓음
- 인터페이스의 집합이기 때문에 단독으로 수행하진 못함 → 구현체 필요
- Hibernate ORM(JPA 구현체) : JPA 표준품질을 구현
- Spring Data JPA : 한단계 더 커스터마이징 함
JPA 구조 및 특성
<JPA 자동관리 영역>
persistence(영속성, 지속가능한 상태로 만들어주는 성질)
- 1차 캐시(영역) : Entity 모음
- entity가 db와 최신상태와 동일하게 가지고 있음.
- 쓰기 지연(영역) : SQL 저장소
- db에 커밋되기 전까지 수행되어야 할 쿼리들을 쌓아둠 → 일괄(묶음)로 처리함
- 트랜젝션 처리가 가능하게 해주는 영역
- 변경 감지 : 캐시를 쓸지, db에서 받아서 entity를 최신화 해야 할지를 감지하고, 변경을 감지하면 묶음으로 업데이트 필요함
- 지연 로딩 : FK되어있더라도 딱 그 해당 테이블만 가져오고, FK가 조회되는 시점에 다른 테이블까지 가져옴
⇒ db와 통신 횟수를 줄임
<ORM> 관계형 테이터베이스 모델을 객체지향으로 매핑해주는 것
클래스(엔티티) ↔ db table 과 매핑됨(ORM)
- entity가 너무 많으니까 entity-manager(엔티티 관리자 - 객체(entity)들을 관리해주는 공간 ← entity-factory(싱글톤, spring 내부에서 only one) 에서 생성됨 )를 둠.
'Coding > Back - Spring Framework' 카테고리의 다른 글
Spring Persistence(DataAccess) Layer : JPA 예제(ORM : 엔티티 간 관계) 3/3 #Day9 (1) | 2023.08.30 |
---|---|
Spring Persistence(DataAccess) Layer : JPA 예제 2/3 #Day9 (0) | 2023.08.30 |
(review) Spring 구성하기 #Day8 (0) | 2023.08.28 |
Spring 예외처리 #Day7 (0) | 2023.08.24 |
Spring Business(Service) Layer #Day6 (0) | 2023.08.23 |