DB 를 직접 다루게 된다면 DB 테이블 만들고, 애플리케이션에서 SQL문 작성하고 이 SQL 을 JDBC 를 통해 직접 실행해줘야 하고 SQL 결과를 객체로 직접 만들어줘야 한다.
즉, 복잡하다.
그리고 SQL 문을 직접 쓰다보니 의존적이게 되어서 변경에 매우 취약해진다. 뭐 하나 바꾸면 연쇄적으로 다 바꿔야 하는 수준.
그래서 ORM 이라는 개념이 존재한다.
Object-Relational Mapping
객체 지향 프로그래밍 언어를 사용하는 개발자가 데이터베이스와 상호작용할 때 객체와 관계형 데이터베이스 간의 데이터를 자동으로 매핑해주는 기술. 즉, 데이터베이스 테이블을 객체로 매핑하고, SQL 쿼리를 작성하지 않고도 객체를 통해 데이터베이스를 조작할 수 있다.
이 ORM 을 자바에 접목한것이 JPA
Java Persistence API.
자바 ORM 기술에 대한 표준 명세


JPA 는 애플리케이션과 JDBC 사이에서 동작된다.
JPA 를 사용하면 DB 연결 과정을 직접 개발하지 않아도 자동으로 처리해줌
또한 객체를 통해 간접적으로 DB 데이터를 다룰 수 있기 때문에 매우 쉽게 DB 작업을 처리할 수 있다.
또 주로 사용하는 JPA 를 구현하여 자주 사용하는 프레임워크 중에 하이버네이트 가 있다.
거의 표준에 가깝다.
스프링부트에서는 기본적으로 하이버네이트 구현체를 사용중.