JPA는 무엇일까?
JPA란?
- Java Persistence API
- 자바 진영의 ORM 기술 표준
ORM이란?
- Object-relational mapping(객체 관계 매핑)
- 객체는 객체대로 설계
- 관계형 데이터베이스는 관계형 데이터베이스대로 설계 - ORM 프레임워크가 중간에서 매핑
- 대중적인 언어에는 대부분 ORM 기술이 존재

데이터베이스 방언
JPA는 특정 데이터베이스에 종속 X
각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다름
가변 문자: MySQL은 VARCHAR, Oracle은 VARCHAR2 문자열을 자르는 함수: SQL 표준은 SUBSTRING(), Oracle은
SUBSTR()
• 페이징: MySQL은 LIMIT , Oracle은 ROWNUM
방언: SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능


주의
엔티티 매니저 팩토리는 하나만 생성해서 애플리케이션 전체에 서 공유
엔티티 매니저는 쓰레드간에 공유X (사용하고 버려야 한다). JPA의 모든 데이터 변경은 트랜잭션 안에서 실행
JPQL
JPA를 사용하면 엔티티 객체를 중심으로 개발 • 문제는 검색 쿼리
검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능
애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검 색 조건이 포함된 SQL이 필요
JPA를 왜 사용해야 하는가?
- SQL 중심적인 개발에서 객체 중심으로 개발 - 생산성이 증가된다.
- 유지보수가 편리하다
- 패러다임의 불일치를 해결할 수 있다.
- 성능이 좋다.