Persistance Framework

Persistance Framework의 등장 배경

과거에는 JDBC를 이용해 DB에 접근을 하였다.

JDBC는 자바에서 데이터베이스에 접근하기 위한 자바 API이다.

JDBC의 가장 큰 장점은 데이터베이스의 종류가 무엇이든 간에 해당 데이터베이스의 JDBC 드라이버만 설치하면 자바 언어로 데이터베이스에 접근하는 것이 가능하다는 것이다.

JDBC를 이용하면 DB의 접근을 하기 위한 자바 API를 제공하기 때문에 DBMS의 종류예 관계 없이 접근이 가능하다는 장점이 있다.

그러나 JDBC 프로그래밍에는 장점만 존재하는 것은 아니다.

JDBC로 DB에 접근하는 방법 중 가장 큰 단점은 복잡하고 번거롭다는 것이다.

JDBC 드라이버를 설치해야하며, API의 규약에 맞춰 일일이 Connection 객체를 생성하고 SQL문을 작성해야 하는 등 귀찮은 일이 많았다.

이를 해결하기위해 등장한 것이 Persistance Framework이며 JDBC에 비해 간단한 방법으로 DB에 접근하여 데이터를 조작할 수 있게 되었다.

모든 Persistance Framework는 내부적으로 JDBC API를 사용하고 있다.

Persistance Framework의 종류

Persistance Framework는 크게 SQL 문장으로 직접 DB를 다루는 SQL Mapper와 자바 객체로 간접적으로 데이터베이스를 다루는 Object Relational Mapper(ORM)이 존재한다.

우리가 흔히 알고 있는 SQL Mapper로는 MyBatis가 있으며 ORM으로는 Hibernate가 있다.

여기서는 SQL Mapper보다는 ORM 기술에 대해서 알아보도록 하겠다.

JPA

네이버나 카카오같은 기술력 있는 회사들의 경우 SQL Mapper보다는 주로 JPA를 사용한다.

나 또한 SQL 쿼리를 직접 짜는 SQL Mapper보다는 자바 객체로 DB를 다루는 JPA 쪽이 더 친근하게 느껴진다.

JPA는 Java Persistance API로써 자바 진영 ORM 기술에 대한 API 표준 명세이다.

즉 JPA란 ORM을 사용하기 위한 표준 인터페이스를 모아둔 것이다.

spring-jpa-architecture

JPA는 사용자가 원하는 구현체를 선택하여 사용할 수 있다.

4sVPQ

대표적인 JPA의 구현체는 Hibernate가 있다.

Hibernate

spring-hibernate-architecture

Hibernate는 대표적인 JPA의 구현체 중 하나이다.

Hibernate에서 SQL을 직접 사용하지 않는다고 해서 JDBC API를 사용하지 않는다는 뜻이 아니다.

Hibernate가 지원하는 메서드 내부에는 JDBC API를 사용하고 있으며 개발자가 직접 SQL을 작성하지 않을 뿐이다.

  • 장점
    • 객체지향으로 데이터를 관리할 수 있기 때문에 비즈니스 로직에 집중할 수 있다.
    • 테이블 변경, 관리가 쉽다.
    • 로직을 쿼리에 집중하기 보다는 객체에 집중할 수 있다.
    • 빠른 개발이 가능하다.
  • 단점
    • 러닝커브가 있고 어렵다.
    • 직접 쿼리를 만드는게 아니기 때문에 성능상 문제가 있을 수 있다.

Reference

https://github.com/WeareSoft/tech-interview/blob/master/contents/db.md

https://gmlwjd9405.github.io/2018/12/25/difference-jdbc-jpa-mybatis.html

https://stackoverflow.com/questions/4477082/what-is-a-jpa-implementation



© 2022. by minkuk

Powered by minkuk