Java Persistence API의 약자로 자바 진영의 ORM(Object Relational Mapping) 기술 표준이다.
ORM을 사용함으로써 객체는 객체대로 설계하고 관계형 데이터베이스는 관계형 데이터베이스대로 설계가 가능해진다. (ORM 프레임워크가 중간에서 매핑해주기 때문)
써야겠지?
JPA의 구동방식을 살펴보면 아래와 같이 META-INF라는 곳 아래에 persistence.xml을 설정정보로 참고한 뒤 EntityManagerFactory를 생성하고 거기서 EntityManager를 생성해서 요청을 실행한다.
EntityManager는 한 트랜잭션 시작과 동시에 생성 후 트랜잭션이 끝나기 전 닫힌다.
비영속
영속성 컨텍스트와 전혀 관계가 없는 새로운 상태
**//객체를 생성한 상태(비영속)
Member member = new Member();
member.setId("member1");
member.setUsername("회원1");**
영속
영속성 컨텍스트에 관리되는 상태
//객체를 생성한 상태(비영속)
Member member = new Member();
member.setId("member1");
member.setUsername(“회원1”);
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
//객체를 저장한 상태(영속)
em.persist(member);
준영속
영속성 컨텍스트에 저장되었다가 분리된 상태
//회원 엔티티를 영속성 컨텍스트에서 분리, 준영속 상태
em.detach(member);