JPA :
- 객체-관계 매핑(ORM)을 수행하기 위한 표준 명세
- 자바 객체와 DB 테이블과 매핑
- 데이터 베이스 연산을 객체 지향적으로 수행하게 해준다.
트랜잭션 :
여러 작업을 하나의 단위로 처리하여 모든 작업이 성공해야 데이터가 DB에 반영이 된다.
- 데이터의 일관성 유지, 시스템의 신뢰성 향상
데이터 베이스로 접근을 줄이고 성능을 향상시키기 위함
엔티티 매니저 수준에서 작동함 ( 각 매니저 마다 독립적으로 존재함 )
엔티티 매니저가 종료되면 같이 사라짐
자동 동작
엔티티를 조회, 수정할때 엔티티 매니저는 1차 캐시를 먼저 들리고 해당 엔티티가 없으면 데이터 베이스에서 조회 후 캐시에 저장함
엔티티 매니저 팩토리 수준에서 작동함
여러 엔티티 매니저 간 공유
애플리 케이션 종료될 때까지 살아있음
수동 동작 ( 의존성 추가 해줘야 함 )
1차에 들리고 2차에도 들린다. 둘 다 없으면 데이터 베이스 조회 후 2차 캐시에 저장한다.
비영속 상태 ( Transient ) : 단순히 메모리에만 존재, 데이터 베이스와 상관없음
영속상태 ( Persistent ) :
엔티티가 영속성 컨텍스트에 의해 관리되는 상태
엔티티 매니저가 해당 엔티티를 변경사항을 추적한다.
커밋될 때 데이터 베이스에 반영된다.
준영속상태 ( Detached ) : 데이터 베이스에 이미 저장된 엔티티가 영속성 컨텍스트에서 분리된 상태
엔티티 매니저가 관리하지 않음
데이터 베이스와 동기화 되지 않음
비영속 -> 영속 : persist 메서드
영속 -> 준영속 : detach 메소드
준영속 -> 영속 : merge 메소드
영속 -> 비영속 : remove 메소드 호출 후 커밋