Spring boot

엔티티 매니저

ryeonng 2024. 9. 30. 15:20
키워드 정리
  • 엔티티(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' 카테고리의 다른 글

단방향, 양방향 매핑  (1) 2024.09.30
영속성 컨텍스트  (0) 2024.09.30
JPA 와 하이버네이트  (0) 2024.09.30
스프링 부트 DB 접근 기술 ORM  (1) 2024.09.30
PUT 방식의 이해 및 실습  (0) 2024.09.27