JDBC (Java Database Connectivity)
- 특징 : CrudRepository를 상속해서 자동으로 CRUD를 지원하는 메서드를 사용할 수 있다
- 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API
- 자바 애플리케이션에서 DBMS의 종류에 상관없이, 하나의 JDBC API를 이용해 DB 작업을 처리
- 각각의 DBMS는 이를 구현한 JDBC 드라이버를 제공한다.
책에는 스프링데이터 JDBC가 O/R매퍼 라는데, 여러 블로그를 찾아봐도 JDBC는아예 반대인 SQL Mapper의 대표격이다..
ORM : JPA
SQL Mapper : JDBC
JPA란 (Java Persistence API)는 자바 진영의 ORM 기술 표준으로 채택된 인터페이스의 모음입니다. ORM이 큰 개념이라면 JPA는 더 구체화된 스펙을 포함합니다. 즉 JPA 또한 실제로 동작하는 것이 아니고 어떻게 동작해야 하는지 메커니즘을 정리한 표준 명세로 생각하면 됩니다.
JPA의 매커니즘을 보면 내부적으로 JDBC를 사용합닏. 개발자가 직접 JDBC를 구현하면 SQL에 의존하게 되는 문제 등이 있어 개발의 효율성이 떨어지는데, JPA는 이 같은 문제점을 보완해서 개발자 대신 적절한 SQL을 생성하고 데이터베이스를 조작해서 객체를 자동 매핑하는 역할을 수행한다
JPA기반의 구현체는 대표적으로 세 가지가 있다.
1. 하이버네이트(Hibernate) (가장 많이 사용됨)
2. 이클립스 링크(EclipseLink)
3. 데이터 뉴클리어스(DataNucleus)
비교 및 요약:
- JDBC는 단순히 자바에서 데이터베이스에 접근하기 위한 API이며, 개발자는 SQL을 직접 작성하고 관리합니다.
- SQL Mapper는 SQL 쿼리와 자바 객체 간의 매핑을 담당하며, 개발자가 SQL을 직접 작성하고 결과를 매핑합니다.
- JPA는 객체와 데이터베이스 간의 매핑을 자동으로 처리하는 표준 인터페이스로, Hibernate와 같은 구현체가 있습니다.
- ORM은 개발자가 직접 SQL을 작성하지 않고도 객체와 데이터베이스 간의 매핑을 자동으로 처리하는 기술입니다. JPA는 이러한 ORM의 한 형태입니다.
이러한 기술들은 서로 보완적이며, 선택은 프로젝트의 요구 사항 및 개발자의 선호에 따라 다를 수 있습니다.