https://suhwan.dev/2019/02/24/jpa-vs-hibernate-vs-spring-data-jpa/
1. JPA
- Java Persistence API: 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스
- 자바 진영의 표준 인터페이스
- 인터페이스이기 때문에 특정 기능을 하는 라이브러리가 아니다
- JPA의 핵심이 되는 EntityManager도 javax.persistence.EntityManager라는 파일에 interface로 정의되어 있다.
2. Hibernate
- JPA라는 명세의 구현체
- javax.persistence.EntityManager와 같은 인터페이스를 직접 구현한 라이브러리
- 즉, JPA-Hibernate의 관계는 자바의 interface와 그를 구현한 class와 같은 관계
3. Spring Data JPA
- Repository가 Spring Data JPA의 핵심
- 이(Repository)는 JPA를 한 단계 추상화시킨 인터페이스
- 사용자가 Repository 인터페이스에 정해진 규칙대로 메소드를 입력하면 Spring이 알아서 해당 메서드 이름에 적합한 쿼리를 날리는 구현체를 만들어 Bean으로 등록해 준다.
- JPA를 추상화했다는 말은 Spring Data JPA의 Repository 구현에서 JPA를 사용하고 있다는 것
https://velog.io/@heoseungyeon/JPA-vs-Spring-Data-JPA
+ JDBC
1. ORM (Object-Relational Mapping)
- 객체로 연결을 해 준다.
- 객체 지향 프로그래밍 언어를 사용하여 호환되지 않는 유형의 시스템 간 데이터를 변환하는 프로그래밍 기술
- 즉, 객체와 관계형 데이터베이스의 데이터를 매핑하는 것이다.
- 객체를 통해 DB Data를 다룬다.
- SQL 쿼리가 아닌 메서드로 데이터를 조작할 수 있다.
- 객체 간 관계를 바탕으로 SQL을 자동으로 생성한다.
- JPA, Hibernate
2. SQL Mapper
- SQL 쿼리 문으로 직접 DB를 조작한다.
- Mybatis, jdbcTemplate
아래는 chatGPT가 비교 분석해 준 내용
MyBatis와 JPA의 차이점 및 연결
JPA의 특징 (ORM 방식)
- 자동 매핑: 엔티티 클래스와 데이터베이스 테이블을 자동으로 매핑합니다.
- 데이터베이스 독립성: 데이터베이스에 종속적이지 않으며, 동일한 코드를 사용하여 여러 데이터베이스에서 동작할 수 있습니다.
- 객체 지향적: 객체 모델을 기반으로 데이터베이스에 접근합니다.
- 데이터베이스 관리를 자동화: 데이터베이스 스키마 관리, 트랜잭션 관리 등을 자동화합니다.
MyBatis의 특징 (SQL 매핑 방식)
- SQL 제어: 개발자가 직접 SQL 쿼리를 작성하고 제어할 수 있습니다.
- 성능 최적화: 복잡한 쿼리나 성능 최적화가 필요한 경우 유리합니다.
- 유연성: SQL을 자유롭게 작성할 수 있어 복잡한 데이터베이스 구조나 쿼리를 유연하게 처리할 수 있습니다.
- Mapper 사용: XML 매퍼 파일 또는 애노테이션을 사용하여 SQL 쿼리를 매핑합니다.
'Spring' 카테고리의 다른 글
[Spring] @Lookup - DL(의존관계 조회/탐색) (0) | 2024.08.25 |
---|---|
[Spring] 객체 지향 프로그래밍의 특징과 좋은 객체 지향 설계의 원칙 5가지, SOLID (0) | 2024.08.17 |
[Spring] Intellij 단축키 모음 (-ing) (0) | 2024.06.26 |
[Spring] MyBatis Repository 인터페이스와 XML 매핑 파일 연결 (0) | 2024.06.12 |
[Spring] 'return + view명', 'redirect:/주소' 차이 (0) | 2024.05.14 |