반응형
JPA(Java Persistence API)
- 자바 어플리케이션에서 관계형 테이터 베이스를 사용하는 방식을 정의한 인터페이스
Hibernate
- 사용이 보편화 되어 있는 JPA 명세의 구현체
Spring Data JPA
- Spring에서 제공하는 모듈로 개발자가 JPA를 더 쉽게 사용할 수 있도록 도와줌
반응형
엔터티 매니저(EntitiyManager)
- 엔터티를 저장하는 메모리상의 데이터 베이스
- 엔터티를 저장, 수정, 삭제, 조회 등 엔터티와 관련된 모든 일을 함
- 스레드세이프 하지 않기 때문에 동시성 문제 발생 할 수 있어 스레드간 공유 하면 안됨.
- web의 경우 일반적으로는 request scope와 일치시킴
엔터티 매니저 팩토리(EntityManagerFactory)
- 엔터티 매니저를 생성할 수 있는 기능을 제공하는 팩토리 클래스
- 여러 스레드가 동시에 접근해도 안전하기 때문에 서로 다른 스레드간 공유해서 재사용함.
- 스레드 세이프 한 기능을 요청 스코프마다 생성하기에는 비용(시간, 메모리)부담이 크기 때문에 보통application 스코프 와 동일한 싱글톤(단하나의 객체)으로 생성해서 관리함.
영속성 컨텍스트(PersistenceContext)
- 엔터티를 영구 저장하는 환경
- 엔터티 매니저에 엔터티를 저장하거나 조회하면 엔터티 매니저는 영속성 컨텍스트에 엔터티를 보관하고 관리 함.
- 영속성 엔터티를 key value 방식으로 저장하는 저장소 역할
- 엔터티 매니저를 생성할 때 하나 만들어지고, 엔터티 매니저를 통해서 영속성 컨텍스에 접근할 수 있고 영속성 컨텍스트 를 관리할 수 있음
// 엔터티 매니저 팩토리는 싱글톤으로 생성해야되서 static으로 선언
private static EntityMangerFactory entityManagerFactory;
// 엔터티는 요청시마다 만들어야 되서 static 제외
private EntityManager entityManager;
@BeforeALL
public static void initFactory(){
entityManagerFactory = Persistence.createEntityManagerFactory("xml 설정파일 name");
}
@BeforeEach
public void initManager() {
entityManager = entityManagerFactory.createEntityManager();
}
@AfterAll
public static void closeFactory() {
entityManagerFactory.close();
}
@AfterEach
public void closeManager() {
entityManager.close();
}
반응형
'프로그래밍 > Spring & Spring boot' 카테고리의 다른 글
[Spring/JPA] Mapping (2) @SequenceGenerator , @TableGenerator, @Embeddable, @IdClass (0) | 2022.09.23 |
---|---|
[Spring/JPA ] Mapping(1) @Entity, @Table, @Enumerated, @Access (0) | 2022.09.23 |
[Spring/스프링] JUnit이란? (0) | 2022.09.20 |
[Spring/스프링] jQuery ajax , Fetch ajax(Simple string, JSON) (0) | 2022.09.20 |
[Spring/스프링] 파일 업로드 (single file , multi file ) (0) | 2022.09.11 |