티스토리 뷰

자바/JPA

JPA 엔티티 관리

tioon 2023. 7. 9. 00:41

 

엔티티 구성도

 

 

 

 

 

엔티티 매니저 팩토리(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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함