백엔드 개발에서 가장 중요한 것은 데이터를 관리하는 일이라고 할 수 있다.
그리고 데이터를 관리하기 위해 사용하는 것이 바로 데이터베이스, DB이다.
그렇다면 데이터베이스를 사용하기 위해서는 어떻게 해야 할까?
먼저, 어떻게 사용해야 하는지를 알아보기 전에, 자바 세상과 DB 세상이 어떻게 다른지부터 알아보는 것이 필요하다.
자바 세상에서의 객체와 데이터베이스는 지향하는 목적이 다르기 때문에 표현 방법도 다르기 때문이다.
- JAVA
- 객체지향
- 객체에는 상속 개념이 존재
- 객체는 참조 사용
- DB
- 상속 개념 없음
- PK와 FK로 연관 관계 설정
- 데이터 중심으로 구조화
위 사진에서 보면 자바 세상에서는 Member의 필드 값으로 Team 타입의 team을 갖고 있지만, DB 세상에서는 TEAM_ID라는 FK를 갖고 있는 것을 볼 수 있다.
그렇다면 이 두 차이는 어떻게 극복해야 할까?
이 차이를 극복하기 위해 탄생한 것이 바로 JPA이다.
JPA란 Java Persistence API의 약자로, JAVA 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용하는 인터페이스의 모음이다.
즉, 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이며, 인터페이스이기 때문에 Hibernate, OpenJPA 등이 JPA를 구현한다.
JPA를 통해 우리는 다음과 같은 장점을 얻게 되었다.
결과적으로, JPA를 사용하면 SQL이 아닌 객체 중심으로 개발할 수 있게 된다.