Object Relational Mappig
어플리케이션 객체와 관계형 데이터 베이스의 데이터를 매핑해주는 도구
Hiberante, JPA 등 존재
프로시저란?
DB 에 대한 일련의 작업을 정리한 절차를 관계형 데이터베이스 관리 시스템에 저장한 것
Java Persistance API

JPA를 편리하게 사용할 수 있도록 지원하는 라이브러리
Hibernate에서 자주 사용되는 기능을 보다 쉽게 사용할 수 있도록 구현해준다.

Entitiy를 영구히 저장하는 환경을 의미
어플리케이션과 DB 사이에서 객체를 보관하는 가상의 DB 역할을 수행한다.
EntitiyManager를 통홰 엔티티를 저장하거나 조회하면 EntityManager는 영속성 컨텍스트에 엔티티를 보관하고 관리한다.
서비스에는 하나의 EntityManagerFactory가 존재하며, DB에 접근하는 트랜잭션이 생길 때마다 EntityManager를 생성하여 영속성 컨텍스트에 접근한다.
EntitiyManager: Entity의 생명주기를 관리하는 context
특정 엔티티를 캐싱하여 동일한 엔티티에 대한 중복 조회를 방지한다.
DB와 불필요한 통신이 감소
DB에 대한 Write 작업을 즉시 실행하지 않고 일정 시간 후에 일괄 처리
빈번한 쓰기 작업을 하게 되면 context switching이 여러번 발생하며, 쓰기 작업을 일괄처리함으로써 문맥교환에 의해 발생하는 오버헤드를 줄여준다.

엔티티 객체를 생성했지만 아직 영속성 컨텍스트에 저장하지 않은 상태
Member member = new Member();
EntityManagerFactory emf = Persistence.createEntityManagerFactory();
EntityManager em = emf.createEntityManager();
em.persist(member); // 객체 저장
em.merge(member); // 준영속 상태를 영속 상태로 변환
em.detach(member); // 특정 엔티티를
em.clear(); // 영속성 컨텍스트 초기화
em.close(); // 영속성 컨텍스트 닫기
em.remove(member)