JDBC, JPA, ORM에 대한 이해

u-nij·2022년 3월 31일
2

JDBC (Java Database Connectivity)

Java에서 DB와 연결되어 데이터를 주고 받을 수 있도록 하기 위해 제공하는 API입니다. Java의 모든 Data Access는 내부적으로 JDBC API를 이용하게 됩니다. Spring에서는 Spring-JPA를 통해 DBMS(Database Management System)의 종류에 상관 없이 JDBC API를 이용해 쉽게 프로그래밍 할 수 있도록 합니다.

원래 Oracle과 MySQL과 같은 DBMS들은 각자의 DB Driver을 가지고 있고, 개발자는 각각이 요구하는 작성 방식에 따라 쿼리문을 적을 필요가 있었습니다. JDBC는 DB Driver들의 작성 방식을 통일시켜 API로 명세한 것입니다. 만약 JDBC API를 사용하고 있다면, Oracle에서 MySQL로 DB를 변경하게 된다 해도 기존의 DB Driver에 따라 새로 작성할 필요가 없습니다. 👍


객체 지향 언어와 관계형 데이터베이스

객체 지향 언어 (Oject-Oriented Language)
: 필드와 메서드 등을 클래스로 캡슐화해 객체로써 사용하며, 외에도 추상화, 상속, 정보은닉, 다형성 등의 장치가 존재합니다.

관계형 데이터베이스 (RDB, Relational Database)
: 데이터 항목 간에 사전 정의를 통해, 속성별로 데이터를 나누어 저장합니다.

패러다임의 불일치

서로가 지향하는 바가 다르니 문제가 발생하게 됩니다. DB에는 추상화, 상속 등의 장치가 존재하지 않고, 도리어 데이터를 쪼개어 저장할 필요가 있습니다. 이를 해결하기 위해서 개발자는 SQL을 잘 서술해야 했고, 자연스럽게 SQL에 대한 의존도가 높아지게 되었습니다.


ORM (Oject-Relational Mapping)

객체와 RDB의 데이터를 자동으로 매핑해주어, 객체간의 관계를 바탕으로 SQL문을 자동으로 생성해줍니다. 즉, 객체는 객체대로, RDB는 RDB에 맞게 설계할 수 있도록 도와줍니다. 따라서, 개발자는 ORM을 이용해 직관적인 코드로 데이터를 조작할 수 있게 됩니다.

JPA (Java Persistant API)

Java에서 제공하는 Java ORM 기술에 대한 표준 API입니다. Java 애플리케이션과 JDBC 사이에서 동작합니다. 개발자가 JPA를 사용하면, JPA 내부에서 JDBC API를 사용해 SQL을 호출하여 DB와 통신합니다. 객체에 하나의 정보를 추가하고자 할 때, 관련된 모든 쿼리에 정보를 추가할 필요가 없어졌습니다.

장점

  • SQL 중심이 아닌 객체 중심의 개발이 가능해져, 개발자가 비즈니스 로직에 집중할 수 있습니다.
  • 테이블이 아닌 객체를 통해 쿼리를 작성하는 JPQL(Java Persistence Query Language)을 지원합니다.
  • 자바 객체와 DB 테이블 사이의 매핑 설정을 통해 SQL을 자동으로 생성합니다. (ORM)
  • 생산성이 증가하고, 유지보수가 쉬워집니다.

Persistence framework 종류

  • SQL 문장으로 직접 데이터베이스 데이터를 다루는 SQL Mapper (ex. Mybatis 등)
  • 객체를 통해 간접적으로 데이터베이스 데이터를 다루는 ORM (ex. Hibernate 등)

0개의 댓글