JPA (Java Persistence API)
- 자바 ORM 기술에 대한 API 표준 명세 (ORM 기술의 인터페이스들을 모아둔 것)
- JPA를 사용하려면 JPA를 구현한 ORM 표준 프레임워크를 선택해야한다.
- 현재 가장 대중적인 ORM 프레임워크는 하이버네이트(Hibernate)이다.
- 하이버네이트 외에도 EclipseLink, DataNucleus, OpenJPA, TopLink Essentials 등이 있다.
하이버네이트(Hibernate)
- JPA 구현체의 한 종류
- 현 시점에서 JPA를 주도하는 프레임워크이기에 JPA와 혼용해서 사용하기도 하며, 2001에 공개된 후 지금도 발전하고 있는 성숙한 ORM 프레임워크
- SQL 매퍼인 MyBatis와 달리 직접 SQL을 사용하지 않고 직관적인 코드를 사용해 데이터를 조작할 수 있다.
Spring Data JPA
- JPA를 쉽게 사용하기 위해 스프링에서 제공하고 있는 프레임워크
- 추상화 정도 :
Spring-Data-JPA -> Hibernate -> JPA
- 하이버네이트에 비해 구현체/저장소 교체가 용이하다.
💡 Persistence Framework (Mybatis, Hibernate, JPA)
- JDBC 프로그래밍의 복잡함이나 번거로움 없이 간단한 작업만으로 데이터베이스와 연동되는 시스템을 빠르게 개발
할 수 있으며, 안정적인 구동을 보장한다
- SQL Mapper
SQL
←mapping→ Object 필드
- SQL 문장으로 직접 데이터베이스 데이터를 다룬다.
- Mybatis, jdbcTemplate 등
- 객체(Object) 관게 맵퍼(ORM)
DB 데이터
←mapping→ Object 필드
- 객체를 통해 간접적으로 데이터베이스 데이터를 다룬다.
- 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결) 해주는 것
- Hibernate 등
(기존의 Hibernate 를 통해 만든 것이 JPA (Java Persistence API) 이며, Spring 에서는 Spring Data JPA를 사용한다)
- 장점
- 객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와준다
- 재사용 및 유지보수의 편리성이 증가한다
- DBMS 에 대한 종속성이 줄어든다
- 단점
- 완벽한 ORM 으로만 서비스를 구현하기가 어렵다.
- 프로시저가 많은 시스템에선 ORM 의 객체 지향적인 장점을 활용하기 어렵다
출처
https://annajin.tistory.com/192
https://theheydaze.tistory.com/595
https://velog.io/@adam2/JPA%EB%8A%94-%EB%8F%84%EB%8D%B0%EC%B2%B4-%EB%AD%98%EA%B9%8C-orm-%EC%98%81%EC%86%8D%EC%84%B1-hibernate-spring-data-jpa
https://annajin.tistory.com/168