자바로 개발하는 애플리케이션은 JDBC API를 사용해서 SQL을 데이터베이스에 전달함.
→ 반복되는 코드
→ SQL에 의존적인 개발 (유지보수 어려움)
⇒ JPA 에서는 CRUD API를 통해서 해결
//저장기능
jpa.persist(member);
//조회기능
String memberId = "helloId";
Member member = jpa.find(Member.class, memberId);
//수정기능
Member member = jpa.find(Member.class, memberId);
member.setName("이름변경");
객체가 단순하면 객체의 모든 속성 값을 꺼내서 파일이나 데이터베이스에 저장하면 되지만, 부모 객체를 상속받았거나 다른 객체를 참조하고 있다면 객체의 상태를 저장하기 어려움.
객체와 관계형 데이터베이스는 지향하는 목적이 서로 다르므로 둘의 기능과 표현 방법이 다르다
⇒ 객체와 관계형 데이터베이스의 패러다임 불일치 문제
상속
연관관계
객체 그래프 탐색
객체가 연관된 객체를 탐색하는 것
SQL을 직접 다루면 처음 실행하는 SQL에 따라 객체 그래프를 어디까지 탐색할 수 있는지 정해짐.
⇒ 엔티티가 SQL에 논리적으로 종속됨
비교
데이터베이스는 기본 키의 값으로 각 로우(row)를 구분.
객체는 동일성(identity)비교와 동등성(equality)비교하는 두 가지 방법.
동일성 비교 ( == 비교
) , 동등성 비교 (equals()
)
JPA (Java Persistence API): 자바 진영의 ORM 기술 표준
ORM (Object-Relational Mapping): 객체와 관계형 데이터베이스를 매핑
ORM 프레임워크