JPA를 왜 사용해야 하는지에 앞서 먼저 JPA Java Persistence API의 약자로
자바에서 객체를 데이터베이스에 저장하고 관리하기 위한 API를 제공한다.
여기서 중요한점은 객체를 데이터베이스에 저장하고 관리한다는 점이다.
DB는 하나하나의 데이터로 구성된 데이터 세상이다.
그래서 예를 들어 주문 테이블과 음식 테이블 간 관계를 만든다고하면
주문 테이블은 음식 테이블의 음식번호 (PK) 데이터 하나만 알고 있으면, 이를 통해 음식 테이블에 정보를 사용할 수 있다.
Java 세상은 하나하나의 객체들로 구성된 객체 세상이다.
여기서 객체는 여러 데이터로 구성되어있다.
그래서 자바에 상에서 주문 객체와 음식 객체 간 관계를 만든다고 하면
주문 객체는 음식의 데이터를 가지고 있어야 하는 것이 아닌 음식 객체를 가져야 한다.
class Order {
String id;
Integer price;
List<Food> foods;
}
객체들의 상호작용으로 돌아가는 Java 세상에서는 foodId만을 가지고 있는 것이 아니라 Food 객체 자체를 가지고 있어야 한다.
이렇게 DB와 자바는 취급하는 기본단위가 서로 다르기 때문에
자바 코드를 단순히 SQL로 바꾼다고 데이터베이스에 저장되지 않는다.
왜냐하면 DB에서는 객체의 모든 정보가 필요한 것이 아니라 음식 ID 라는 데이터 하나만 있으면 된다.
하지만 JAVA, DB 둘 중 하나가 상대의 타입에 맞춰준다면 쉽게 해결될 수 있겠지만, 이거는 불가능하다.
상대 특성에 맞춘다면 자신 고유의 장점과 철학이 사라질 것이다. 모호한 기술을 개발자들은 사용하기 싫을 것이다.
이때 서로의 특성을 살려 자바는 객체지향 설계를 할 수 있게 유지해주고 데이터베이스는 데이터 위주의 설계를 유지할 수 있게 중개자 역할을 하는 JPA를 사용해서 서로 맞춰줄 수 있게 할 수 있다.
다음 글에서 JPA를 어떻게 사용할 수 있는지 알아보도록 하자!