Java Persistence API
자바 진영의 ORM 기술 표준
아래의 코드만 짜놓으면 알아서 JPA가 데이터베이스에 쿼리를 날림
JPA는 엔티티(Entity) 또는 도메인 객체(Domain Object)의 필드만 아래처럼 변경시키면 SQL 쿼리는 JPA가 알아서 날려줌 기존의 SQL쿼리코드를 일일이 변경해주지않아도 된다.
자바에서의 객체지향 개념(추상화, 캡슐화, 정보은닉, 상속, 다형성)과 같이 시스템의 복잡성을 제어할 수 있는 방법은 데이터베이스같이 데이터중심으로 구조화되어있는 시스템과 다르다. 객체의 상속, 다형성 같은 개념이없다. 그렇다보니 객체와 데이터베이스가 지향하는 점이 다르다. 이것을 객체와 데이터베이스의 패러다임 불일치라고 한다. 자세한 설명 이펙티브 백엔드 참고
같은 트랜잭션 안에서 같은 회원을 두 번 조회하는 경우를 생각해보자. JDBC API는 조회를 할 때마다 데이터베이스와 통신을 했을 것이다. 반면, JPA는 하나의 트랜젝션에서 첫번째 조회한 내용을 두번째에서 재사용한다.
String memberId = "100";
Member member1 = jpa.find(Member.class, memberId);
Member member2 = jpa.find(Member.class, memberId);
member1 == member2; //같다.