-> Java persistence API
= 자바의 ORM(Object-Relational Mapping) 기술 표준으로 사용하는 인터페이스 모음, 구현된 클래스와 DB를 매핑해주기 위해 사용되는 framework이다.
= Object-Relational Mapping
객체와 관계형 데이터베이스를 매핑한다는 뜻
ORM 프레임워크는 객체와 테이블을 매핑해 패러다임의 불일치를 개발자 대신 해결해준다. 객체는 객체대로 생성하고, 데이터베이스는 데이터베이스에 맞도록 설계를 가능하게 해준다. 개발자는 이를 매핑하는 방법만 전달해주면 된다.
query가 복잡해지면 표현하는 데 한계가 있다.
그리고 raw query보다 느리다.
Project Setting
기본 project -> maven project로 convert -> JPA Project 추가 convert
persitence.xml 파일생성 확인
persitence.xml 파일에 < persistence-unit name="db" > 과
run.java 파일에
EntityManagerFactory emf = Persistence.createEntityManagerFactory("db");
" " 안에 동일하게
=> persistence-unit name은 EntityManager가 받는 input parameter로 일치시켰을 때 persitence.xml을 통해 db와 연결 가능하다.
persitence.xml 파일에
< property name="hibernate.hbm2ddl.auto" value="create" />
=> 테이블 생성 모드, 기존에 테이블이 있어도 drop 후 다시 생성
기존 테이블의 데이터도 초기화한다.
< property name="hibernate.hbm2ddl.auto" value="none" />
=> 테이블 비생성 모드, 기존 테이블에 데이터 값만 추가하거나 변경, 삭제한다. 기존 테이블을 drop하지 않고 사용하려면 반드시!! none으로 변경 후 사용
model 파일 persitence.xml에 추가하기
Persitence.xml 파일에 오른쪽 마우스 JPA tool -> synchronize class List
persitence.xml 파일에 자동으로 @Entity annotation이 있는 클래스가 추가된다.
또는 persitence.xml 파일에 직접 추가
<class> model.domain.entity.Employee </class>
EntityManagerFactory : 공장
↓
EntityManager : 관리자
↓
EntityTransaction : 생산 작업
↓
Entity : 생산품
기본적으로 비휘발성이다. 이를 통해 컴퓨터가 꺼지고 다운되도 데이터가 날아가지 않도록 하는 성질이다.
Entity Manager가 영속성 context를 관리하며, 데이터는 수행하는 퀴리에 따라 다음과 같이 속성이 달라진다.
EntityManager em = emf.createEntityManager();`
EntityTransaction tx = em.getTransaction();
tx.begin();
...수행할 코드
tx.commit(); //db에 실제 실행
em.close(); //지원 반환
emf.close();
Employee e1 = new Employee(1, "KimCS", 30, "Sales")
em.persist(e1); //jdk 메모리에 임시 저장
Employee e2 = em.find(Employee.class, 1)
e1.setDept("Marketing");
em.remove(e1);
참고 사이트 :
https://ultrakain.gitbooks.io/jpa/content/chapter1/chapter1.3.html