JPA(Java Persistance API)란?
: 자바에서 사용하는 표준 ORM
: 자바에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스
JPA는 인터페이스이기 때문에 실제 사용을 위해 ORM 프레임워크가 필요
Hibernate란?
: JPA를 사용하기 위해 JPA를 구현한 구현체이자 자바용 ORM 프레임워크
: 자바 객체를 통해 데이터베이스 종류에 상관없이 데이터베이스를 자유자재로 사용할 수 있도록 함
: 내부적으로는 JDBC API를 사용
데이터 엑세스 계층(Data Access Layer)
: 데이터 저장/조회 등의 작업은 JPA를 거쳐 구현체인 Hibernate ORM을 통해 진행되며, JDBC API를 통해 DB에 접근
엔티티(Entity)란?
: 데이터베이스 테이블과 매핑되는 객체
: 데이터베이스의 테이블과 직접 연결되어 객체이지만 데이터베이스에 영향을 미치는 쿼리를 실행하는 객체로 볼 수 있음
엔티티 매니저(Entity Mager)란?
: 엔티티를 관리해 데이터베이스와 애플리케이션 사이에서 객체(엔티티)를 생성, 수정, 삭제하는 등의 역할 진행
: 엔티티를 영속성 컨텍스트에 저장
: 엔티티 매니저 팩토리를 통해 만들어짐
: 필요한 시점에 데이터베이스와 연결한 뒤 쿼리함
[스프링 부트에서는?]
: 스프링 부트 내부에서 엔티티 매니저를 하나만 생성해서 관리
: @PersistanceContext or @Autowired 애너테이션을 통해 엔티티 매니저를 사용
위 처럼 애너테이션을 통해 빈은 하나만 생성하여 공유하기 때문에 동시성 문제 발생
: 실제로는 엔티티 매니저가 아닌 엔티티 매니저와 연결하는 프록시(가짜) 엔티티 매니저를 사용
: 필요할 때 데이터베이스 트랜젝션과 관련된 실제 엔티티 매니저를 호출
'학습 기록 > 스프링 부트3 백엔드 개발자 되기[자바편]' 카테고리의 다른 글
[05장.3] 3. 엔티티 상태 (0) | 2023.09.04 |
---|---|
[05장.3] 2. 영속성 컨텍스트 (0) | 2023.09.04 |
[05장.2] ORM(Object-relation mapping) (0) | 2023.09.01 |
[05장.1] 1. 데이터베이스 관리자, DBMS (0) | 2023.09.01 |
[04장.3] 제대로 테스트 코드 작성해보기 (0) | 2023.09.01 |