티스토리 뷰
엔티티 구성도
엔티티 매니저 팩토리(Entity Manager Factory)
-JPA를 사용해 데이터베이스와 상호작용하기 위한 엔티티 매니저를 생성하고 관리하는 역할을하는 팩토리입니다.이를 사용해 Entity Manager를 생성 및 관리를 할 수 있으며, 애플리케이션 전체에서 공유됩니다.
엔티티 매니저(Entity Manager)
-엔티티 영속성 컨텍스트(Persistence Context)를 관리하는 것으로, 영속석 컨텍스트 내부의 엔티티 상태를 추적하고 변경된 엔티티를 데이터베이스에 동기화하는 기능을 제공하는 것 입니다. 이는 애플리케이션에서 여러개 생성이 될 수 있습니다.
영속성 컨텍스트(Persistence Context)
- 엔티티를 영구 저장하는 환경으로, 엔티티들을 저장하는 공간입니다. 엔티티 매니저마다 하나씩 가지고 있는 공간이며, 여러개의 엔티티들이 저장될 수 있습니다.
엔티티 매니저를 통해 영속석 컨텍스트를 관리할 수 있습니다.
엔티티 등록 과정
- 엔티티 클래스 정의
@Entity
public class MyEntity {
// 엔티티의 속성과 메소드 정의
}
- 엔티티 매니저 팩토리 , 엔티티 매니저 생성
//엔티티 매니저 팩토리 생성
EntityManagerFactory emf = Persistence.createEntityManagerFactory("엔티티 매니저 팩토리 이름");
//엔티티 매니저 생성
EntityManager em = emf.createEntityManager();
- 트랜잭션 시작 및 커밋
em.getTransaction().begin(); //트랜잭션 시작
em.getTransaction().commit(); //트랜잭션 커밋
- 엔티티 등록
MyEntity entity = new MyEntity();
// 엔티티 속성 설정
em.persist(entity);
- 엔티티 수정
MyEntity entity = em.find(MyEntity.class, id);
entity.setName("New Name");
- 엔티티 삭제
MyEntity entity = em.find(MyEntity.class, id);
em.remove(entity);
엔티티 생명주기
- New(비영속)
-엔티티 객체가 생성된 후, 아직 영속성 컨텍스트에 속하지 않는 상태입니다.
즉, 코드로 엔티티가 구현되어있지만, 데이터베이스와는 아무런 관련이 없는 상태입니다. - Managed(영속)
-엔티티가 영속성 컨텍스트에 관리되는 상태입니다.비영속상태에서 persist()를 통해 영속화가 가능합니다.
영속성 컨텍스트에의해 엔티티의 상태 변화가 추적되며, 변경된 내용은 데이터베이스에 자동으로 반영됩니다. - Detached(준영속)
-엔티티가 영속성 컨텍스트에 속해 있었다가, 더이상 관리되지않는 상태입니다. 엔티티가 엔티티 매니저에서 분리(Detach)되었거나, 트랜잭션이 종료되었을때 준영속 상태가 됩니다. - Removed(삭제)
-엔티티가 영속성 컨텍스트에서 삭제된 상태입니다. 엔티티 매니저에서 엔티티가 삭제(remove)된 상태입니다.
이 상태로 되었을때 DB에 삭제연산을 진행 할 수 있습니다.
'자바 > JPA' 카테고리의 다른 글
엔티티 리포지토리(Repository) (0) | 2023.08.24 |
---|---|
JPA 엔티티 (0) | 2023.08.24 |
JPA란? (0) | 2023.08.17 |