티스토리 뷰
엔티티 (Entity)
: 엔티티란 데이터베이스의 테이블에 대응하는 클래스이다. @Entity가 붙은 클래스는 JPA에서 관리하며 엔티티라고 한다.
데이터베이스에 item 테이블을 만들고 이에 대응 되는 item 클래스를 만들어서 @Entity 어노테이션을 붙이면 이 클래스가 엔티티가 되는 것.
클래스 자체나 생성한 인스턴스도 엔티티라고 부른다.
엔티티 매니저 팩토리 (Entity Manager Factory)
: 엔티티 매니저 인스턴스를 관리하는 주체
- 애플리케이션 실행 시 한 개만 만들어지며 사용자로부터 요청이 오면 엔티티 매니저 팩토리로부터 엔티티 매니저를 생성한다.
엔티티 매니저 (Entity Manager)
: 영속성 컨텍스트에 접근하여 엔티티에 대한 데이터베이스 작업을 제공한다.
- 내부적으로 데이터베이스 커넥션을 사용해서 데이터베이스에 접근한다.
엔티티 매니저의 몇 가지 메소드들
1) find() 메소드 : 영속성 컨텍스트에서 엔티티를 검색하고 영속성 컨텍스트에 없을 경우 데이터베이스에서 데이터를 찾아 영속성 컨텍스트에 저장한다.
2) persist() 메소드 : 엔티티를 영속성 컨택스트에 저장한다.
3) remove() 메소드 : 엔티티 클래스를 영속성 컨텍스트에서 삭제한다.
4) flush() 메소드 : 영속성 컨텍스트에 저장된 내용을 데이터베이스에 반영한다.
영속성 컨텍스트
: 엔티티를 영구 저장하는 환경. 엔티티 매니저를 통해 영속성 컨텍스트에 접근한다.
엔티티 생명주기
엔티티 생명주기의 세부 내용
<예시> 상품 엔티티를 만들어서 영속성 컨텍스트에 저장한 후 데이터베이스에 반영하는 코드
Item item = new Item(); //1)
item setItemNm("테스트 상품");
EntityManager em = entityManagerFactory.createEntityManager(); //2)
EntityTransaction transaction = em.getTransaction(); //3)
transaction.begin();
em.persiste(item); // 4)
transaction.commit(); //5)
em.close(); // 6)
emf.close(); //7)
1) 영속성 컨텍스트에 저장할 상품 엔티티를 하나 생성한다.
new 키워드를 통해 생성했으므로 영속성 컨텍스트와 관련이 없는 상태다
2) 엔티티 매니저 팩토리로부터 엔티티 매니저를 생성한다.
3) 엔티티 매니저는 데이터 변경 시 데이터의 무결성을 위해 반드시 트랜잭션을 시작해야 한다.
여기서의 트랜잭션도 데이터베이스의 트랜젝션과 같은 의미이다.
4) 생성한 상품 엔티티가 영속성 컨텍스트에 저장된 상태이다.
// 여기까지는 데이터베이스에 Insert SQL을 보내지 않은 상태이다.
5) 트랜젝션을 데이터베이스에 반영한다.
이 때 영속성 컨ㄴ텔스트에 저장된 상품 정보가 데이터베이스에 INSERT되면서 반영된다.
6), 7) 엔티티 매니저와 엔티티 매니저 팩토리의 close 메소드를 호출해 사용할 자원을 반영한다.
참고 : <쇼핑몰 프로젝트 with JPA> (변구훈 저)
728x90
반응형
'[개발] - Spring > 개념 정리' 카테고리의 다른 글
엔티티 설계하기 관련 (1) | 2023.02.05 |
---|---|
영속성 컨텍스트 사용 시 이점 (0) | 2023.02.05 |
Lombok 라이브러리에서 자주 사용하는 어노테이션 (0) | 2023.01.30 |
의존성 주입과 제어의 역전 (0) | 2023.01.21 |
Anotation의 종류와 지속 기간 (0) | 2023.01.17 |
Comments