History (EJB->Hibernate->JPA)
JPA :ORM(Object-relational Mapping) 기술 표준,
EJB 3.0에서 하이버네이트 기반으로 만들어짐.
JPA 1.0(2006) : 초기버전
JPA 2.0(2009) : 대부분의 ORM 기능. JPA
Criteria추가
JPA 2.1 (2013) : 스토어드 프로시저 접근 가능,
컨버터, 엔티티 그래프 기능 추가
DB modeling VSObject modeling
모델링의 패러다임 이동 : DB => Object
6.
Build application
based onDB modeling
테이블보다 더 많은 객체 생성을 요구.
RDBMS는 객체지향과 거리가 멀다.
JAVA는 객체의 참조를 사용하는 반면 RDBMS는
foreign key를 참조.
객체에 대한 접근은 JAVA 와 RDBMS간 차이가 큼.
테이블 구조 변경시 application에서 할 일이…ㅜㅜ
7.
IBATIS VS JPA
Altertable(add column)이 일어난 경우
1. Ibatis : Sql mapper 수정, domain class수정,
business class에서 set 처리 (if 다수의 쿼리와
도메인 클래스가 존재한다면?)
2. JPA : 도메인 수정, 비즈니스 로직 수정…끝! 응?
8.
WHY JPA?
반복적인 CRUD를줄이고 객체지향 설계와 로직에
집중.
반복적인 DB 조회 없이 객체 그래프가 가능.
DBMS Vendor와 관계없이 사용가능 (개발환경 : H2,
유지보수 환경 : Mysql, 실환경 : oracle)
초기 개발이 빠르고 유지보수가 상당히 용이.
Junit의 활용범위가 넓어진다.
9.
WHY JPA?
통계 처리보다는실시간 처리 쿼리에 최적화. 통계
처리 경우 네이티브 SQL를 사용 혹은 IBATIS 를
혼용하여 사용
데이터 접근 추상화와 DBMS 밴더에 대해 독립적
: vendor에 맞는 dialect 사용 => 페이징 방식, 스트링
함수, 날짜 함수 등
Entity Manager
EntityManagerFactory factory=
Persistence.createEntityManagerFactory(“Members”);
em = factory.createEntityManager();
Member mem = new Member();
mem.setUserName(“coder”);
mem.setAge(33);
Member selectedMember = em.find(Member.class, id);