DB를 SQL로 직접 다룰때의 문제점
한 객체 데이터를 DB에 저장해서 관리한다고 가정하면 해야할 일
- DB 테이블 생성
- 애플리케이션에서 SQL 작성
- SQL을 JDBC를 사용해 직접 실행
- SQL 결과를 객체로 직접 만들어줘야함
이때 필드를 하나 더 추가한다고 가정하면 해야할 일
- SQL를 직접 수정해야함
- 자바 객체 값도 변경해줘야함
비즈니스로직보다 SQL 작성 및 수정에 더 많은 노력 필요
👉🏻 특히, SQL 의존적이라 변경에 취약
ORM(Object-Relational Mapping)
Object : "객체"지향 언어 (자바, 파이썬)
Relational : "관계형" 데이터베이스 (H2, MySQL)
위에서 본 것 처럼 반복적이고 번거로운 애플리케이션 단에서의 SQL 작업을 줄여주기 위해서 ORM(객체 관계 매핑)기술들이 등장!
- ORM: 객체와 DB의 관계를 매핑 해주는 도구
- ORM을 사용하면 SQL 작업들을 자동으로 처리해줌
JPA(Java Persistence API)
- JPA: Java ORM 기술의 대표적인 표준 명세
- JPA는 애플리케이션과 JDBC 사이에서 동작
- JPA는 DB 연결 과정을 직접 개발하지 않아도 자동으로 처리해줌
- 또한 객체를 통해 간접적으로 DB 데이터를 다룰 수 있어 매우 쉽게 DB 작업 처리 가능
Hibernate
- 하이버네이트: 자바 언어를 위한 ORM 프레임 워크
- JPA는 표준 명세이고, 하이버네이트는 JPA 구현체 중 사실상 표준
- 스프링 부트에서는 기본적으로 하이버네이트 구현체를 사용 중!