-관계형 데이터베이스 : 키와 값들의 간단한 관계를 테이블화 시킨 매우 간단한 원칙의 전산정보 데이터베이스 (Primary Key가 존재!)
위와 같은 테이블을 예시로 들 수 있다. 오른쪽 테이블에서의 Foreign Key는 왼쪽 테이블에서의 Primary Key이다.
위 테이블을 자바 객체로 표현하게 된다면 아래와 같은 dto로 나타낼 수 있다.
이 때 왼쪽의 dto경우에는 이상이 없지만 오른쪽 dto에서는 문제가 생긴다. 클래스 입장에서 봤을 때 foodId는 아무 쓸모가 없다. 실제로는 foodId 값을 통해 foodDto 중에서 동일한 id가 있는 것을 검색해서 가져오게 되는데 이것은 객체지향 언어 관점에서 봤을 때 비효율적이다.
위와 같이 Order클래스 안에 Food 클래스가 들어가 있어야 올바른 것이라고 볼 수 있다.
그래서.. 나온 것이... ORM 이다!
ORM이란?
객체 관계 매핑(Object-relational mapping; ORM)은 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다.
객체 지향 언어에서 사용할 수 있는 "가상" 객체 데이터베이스를 구축하는 방법이다.
객체 관계 매핑을 가능하게 하는 상용 또는 무료 소프트웨어 패키지들이 있고, 경우에 따라서는 독자적으로 개발하기도한다.
왼쪽에 있는 테이블을 오른쪽과 같이 표현하게 된다.
JPA란?
JPA란 자바 ORM 기술에 대한 API 표준 명세를 의미한다. ORM을 사용하기 위한 인터페이스를 모아둔 것이다.
JPA가 ORM기술 자체를 구현해주는 것은 아니다. 이미 존재하는 java객체에 데이터상의 테이블을 어떤 식으로 표현될지를 정의하는 어노테이션이다.
JPA를 사용하기 위해서는 JPA를 구현한 Hibernate, EclipseLink, DataNucleus 같은 ORM 프레임워크를 사용해야 한다.
JPA를 구현한 여러 프레임워크가 있지만 Hibernate가 JPA를 주도하고 있다. (그런데 우리나라는 mybatis를 더 많이 사용한다.)