1. 공통점
- 데이터베이스 연동에 사용됨
- 두 의존성 모두 데이터베이스와의 상호작용을 돕는다.
- Spring Boot 애플리케이션에서 데이터베이스 관련 작업을 수행하는 데 필요하다.
- 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. 함께 사용하는 방식
- MariaDB Driver는 JPA가 데이터베이스와 연결할 수 있는 기반을 제공한다.
- 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
'┝ DB > ┝ RDBMS' 카테고리의 다른 글
[jpa] No property '' found for type '' (0) | 2025.01.25 |
---|---|
[spring boot] mariaDB, JPA 적용 (0) | 2025.01.23 |
[SpringBoot] MyBatisSystemException과 org.springframework.dao.UncategorizedDataAccessException (1) | 2024.11.01 |
[mySQL] auto increment된 키 값 바로 받아오는 세가지 방법 (param, vo, map) (1) | 2024.10.16 |
[postgre] (0) | 2023.08.29 |