[spring boot] 셋업 - JPA와 Driver의 차이


1. 공통점

  1. 데이터베이스 연동에 사용됨
    • 두 의존성 모두 데이터베이스와의 상호작용을 돕는다.
    • Spring Boot 애플리케이션에서 데이터베이스 관련 작업을 수행하는 데 필요하다.
  2. Spring Boot와 호환 가능
    • Spring Boot의 자동 설정(auto-configuration)을 통해 간편하게 설정 및 사용이 가능하다.

2. 차이점

  Spring Data JPA MariaDB Driver
역할 데이터 접근 계층의 추상화 제공 MariaDB 데이터베이스와 연결을 위한 JDBC 드라이버
주요 기능 JPA(Java Persistence API)를 기반으로 한 데이터 조작
Repository 인터페이스로 CRUD 작업 단순화
객체-관계 매핑(ORM) 지원
MariaDB와 Java 애플리케이션 간 JDBC를 통해 직접 통신- SQL 쿼리 실행 및 결과 반환
의존성 종류 추상화 계층
데이터베이스 종류와 관계없이 동일하게 동작
구현 계층
MariaDB에 특화된 기능 제공
필수 여부 선택 사항 (JPA 사용 시 필요) 필수 (MariaDB를 사용할 경우 반드시 필요)
기술 스택 연동 Hibernate와 같은 JPA 구현체와 함께 사용 JDBC를 통해 데이터베이스와 직접 통신
설정 요구사항 - spring.jpa.* 설정 필요- Hibernate Dialect 필요 - spring.datasource.* 설정 필요

3. 함께 사용하는 방식

  1. MariaDB Driver는 JPA가 데이터베이스와 연결할 수 있는 기반을 제공한다.
  2. Spring Data JPA는 MariaDB Driver를 사용해 데이터베이스와 통신하며, 애플리케이션 개발자는 SQL 대신 엔티티(Entity)와 Repository 인터페이스로 데이터 조작을 수행할 수 있다.

비유로 이해하기

  • MariaDB Driver: 데이터베이스와의 연결을 담당하는 "전화기".
  • Spring Data JPA: 데이터를 쉽게 조작할 수 있도록 해주는 "비서".
    • 전화기를 통해(Driver) 데이터를 주고받되, 개발자는 비서를 통해(Repository) 쉽게 명령을 전달하고 결과를 받는다.

결론

  • MariaDB Driver는 데이터베이스 연결을 위한 필수 구성 요소이고, Spring Data JPA는 더 높은 추상화를 제공해 데이터를 효율적으로 관리할 수 있도록 돕는다.
  • 두 의존성은 서로 보완적인 역할을 하며, Spring Boot 애플리케이션에서 함께 사용하는 것이 일반적이다.

ORM (Object-Relational Mapping)

https://tistory-pencilcase.tistory.com/186

ORM은 객체와 관계형 데이터베이스 간의 매핑을 담당하는 기술이다.

ORM은 객체 지향 프로그래밍 언어(예: Python, Java, C#)와 데이터베이스 간의 갭을 줄이기 위해 사용된다. 객체와 데이터베이스 간의 변환, 즉 객체를 데이터베이스 테이블에 저장하고 데이터베이스 레코드를 객체로 변환하는 작업을 자동으로 처리한다.

 

ORM Framework ( JPA 구현체 )

  • Hibernate
  • EclipseLink

JPA와 Hibernate

https://velog.io/@suk13574/JDBC-vs-myBatis-vs-JPA-%EC%B0%A8%EC%9D%B4%EC%A0%90-%EC%95%8C%EA%B8%B0

JPA

JPA는 인터페이스, 이를 사용하기 위해 구현체를 선택해야한다. ===> 이것이 Hibernate

JPA는 자바 표준 ORM API, ORM을 사용하기 위한 표준 인터페이스 모음

객체를 통해 간접적으로 DB 데이터 다룸

Hibernate

  • JPA의 대표 구현체
  • 내부에 JDBC 사용
  • 간단한 CRUD 쿼리 메서드 제공 -> 메서드로 데이터 조작 가능
  • 복잡한 쿼리는 결국 SQL을 짜야함

https://tistory-pencilcase.tistory.com/304

 

[spring boot] mariaDB, JPA 적용

 

tistory-pencilcase.tistory.com