JPA와 하이버네이트에 대한 기본 개념을 확인했다면 다음으로 엔티티 매니저와 영속성 컨텍스트에 대한 개념을 알아보자.
학습 키워드 정리
- 엔티티(Entity): 데이터베이스 테이블과 매핑되는 자바 클래스입니다.
- 엔티티 매니저(Entity Manager): 엔티티의 생명주기를 관리하며, CRUD 작업을 수행합니다.
- 엔티티 매니저 팩토리(Entity Manager Factory): 엔티티 매니저를 생성하는 팩토리로, 스프링 부트 애플리케이션에서 한번만 생성됩니다.
코드 상에서의 엔티티 선언 형태
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// 기본 생성자
public User() {}
// 생성자
public User(String name, String email) {
this.name = name;
this.email = email;
}
}
엔티티(Entity)란?
데이터베이스의 테이블과 매핑되는 자바 객체를 의미합니다. 엔티티는 본질적으로 자바 객체이므로 일반 객체와 다르지 않지만, 테이블과 직접 연결된다는 특징이 있어 일반 객체와 구분하여 부릅니다. 즉, 엔티티는 자바 객체이면서도 데이터베이스에 쿼리를 실행하여 데이터를 저장, 조회, 수정, 삭제하는 역할을 합니다. 이는 엔티티가 단순한 데이터 모델을 넘어, 데이터베이스와의 상호작용에서 중요한 역할을 한다는 점에서 중요합니다.
- 엔티티(Entity)는 JPA(Java Persistence API)에서 데이터베이스 테이블에 매핑되는 자바 클래스입니다. 즉, 엔티티는 데이터베이스의 레코드와 직접적으로 연결되어 있으며, 이 클래스의 인스턴스는 데이터베이스 테이블의 행(row)에 해당합니다.
- 엔티티 클래스는 @Entity 어노테이션을 사용해 정의되며, 각 클래스 필드는 데이터베이스 테이블의 열(column)에 매핑됩니다.
- 예를 들어, User 클래스는 데이터베이스의 users 테이블에 매핑될 수 있으며, id, name, email 필드는 각각 id, name, email 열에 대응됩니다.
엔티티 매니저(Entity Manager)란?
- 엔티티 매니저(Entity Manager)는 JPA의 핵심 인터페이스로, 엔티티의 생명주기(lifecycle)를 관리하는 역할을 합니다. 엔티티 매니저를 통해 데이터베이스에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행할 수 있습니다.
- 엔티티 매니저는 persist, find, remove, merge 등의 메서드를 제공하여 엔티티 객체를 데이터베이스에 저장하거나 조회, 삭제할 수 있습니다.
- 엔티티 매니저는 일반적으로 개발자가 직접 인스턴스화하지 않고, 스프링 부트와 같은 프레임워크에서 DI(Dependency Injection) 방식으로 주입받아 사용합니다.
@Autowired
private EntityManager entityManager;
public User findUser(Long id) {
return entityManager.find(User.class, id);
}
public void saveUser(User user) {
entityManager.persist(user);
}
동작 원리
- 엔티티 매니저는 특정 영속성 컨텍스트(Persistence Context)와 연결되어 있으며, 이 컨텍스트 내에서 엔티티 객체를 관리합니다.
- 영속성 컨텍스트는 엔티티 객체의 상태를 추적하고, 필요에 따라 데이터베이스와 동기화합니다.
엔티티 매니저 팩토리(Entity Manager Factory)란?
- *엔티티 매니저 팩토리(Entity Manager Factory)**는 엔티티 매니저를 생성하는 책임을 가진 객체입니다. 스프링 부트 애플리케이션에서 엔티티 매니저를 필요로 할 때, 엔티티 매니저 팩토리가 이를 생성하여 제공하게 됩니다.
- 엔티티 매니저 팩토리는 애플리케이션에서 한번만 생성되며, 이를 통해 여러 엔티티 매니저 인스턴스를 생성할 수 있습니다. 이 팩토리는 데이터베이스와의 연결 정보를 가지고 있으며, 영속성 유닛(Persistence Unit)이라고 불리는 설정 단위를 기반으로 엔티티 매니저를 관리합니다.
동작 원리
스프링 부트는 애플리케이션이 시작될 때 엔티티 매니저 팩토리를 자동으로 구성하고, 필요한 영속성 유닛을 설정합니다. 이 과정에서 데이터베이스 연결 정보, 캐싱 설정, 트랜잭션 관리 등 다양한 설정이 적용됩니다.
'Spring boot > 개념 공부' 카테고리의 다른 글
단방향,양방향 매핑에 대한 이해 (0) | 2024.10.01 |
---|---|
영속성 컨텍스트란? (0) | 2024.10.01 |
JPA와 하이버네이트란? (0) | 2024.10.01 |
스프링 부트 DB 접근 기술 ORM (1) | 2024.10.01 |
DELETE 방식에 이해 및 실습 (1) | 2024.09.27 |