일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 자바
- 서블릿
- 세션
- Docker
- CircuitBreaker
- 트랜잭션
- yml
- 프로그래머스
- 우아한테크코스
- 우테코
- 의존성
- 레벨2
- mock
- REDIS
- AOP
- HTTP
- 프리코스
- 스프링부트
- Level2
- AWS
- 코드리뷰
- 미션
- 우아한세미나
- Spring Batch
- JUnit5
- Paging
- 백준
- MSA
- 스프링 부트
- JPA
Archives
- Today
- Total
늘
JPA, Hibernate, Spring Data JPA 본문
728x90
화창한 오후..시험도 끝나고 오랜만에 블로그도 정리할겸 확인해보는데 정작 JPA대한 정리가 없었다!!..그래서 오늘은 JPA에 대해서 공부해왔던 내용을 정리해보려고 한다
JPA(Java Persistence Api)
- JPA가 나온 배경을 보자면, 기존의 MyBatis와 같은 SQL매퍼를 이용한 데이터베이스의 작성은 객체지향과는 거리가 멀다.
- 그래서 객체 모델링보다는 테이블 모델링에 집중하는 모습을 해결하기 위해서 JPA라는 자바 표준 ORM기술이 나오게 되었다.(* ORM은 객체를 매핑하는 것이고, MyBatis와 같은 SQL Mapper는 쿼리를 매핑하는 것)
- 관계형 DB는 어떻게 데이터를 저장할지에 초점이 맞춰진 기술이고, 객체지향 프로그래밍은 메시지를 기반으로 기능과 속성을 관리하는 기술이다. ---> 이처럼 서로 패러다임이 다른데, 객체를 DB에 저장하려고 하니 문제가 발생(패러다임 불일치)
- 이러한 문제를 해결해주는게 JPA
Hibernate
- 자바 환경에서의 객체-관계 모델 매핑 솔루션
- 즉, ORM툴로서 JPA를 참조하여 구현하는 기능을 제공하는 프레임워크
Spring Data JPA
- 스프링에서 JPA 구현체들을 더 쉽게 사용하고자 추상화 시킨 Spring Data JPA라는 모듈을 이용하여 JPA 기술 사용
- 즉, 데이터를 접근하는 계층에서 발생하는 단순한 반복적인 코드를 줄이기 위해서 사용 ex) save(), findAll()
Hibernate와 Spring Data JPA 관계
- JPA<- Hibernate<- Spring Data JPA
- Hibernate는 JPA 구현체 <-> Spring Data JPA는 구현체가 아닌 데이터 접근의 추상화
- Hibernate와 Spring Data JPA는 대체로 비슷하지만 크게 2가지가 다르다(구현체 교체의 용이성, 저장소 교체의 용이성)[Spring Data JPA를 사용하는 이유]
- Spring Data JPA는 항상 하이버네이트와 같은 구현체들과 함께 사용되는데 이떄, Hibernate에서 다른 구현체로 교체될때 Spring Data JPA는 내부에서 구현체 매핑을 지원해주므로 손쉽게 교체가 가능하다(구현체 교체의 용이성)
- DB를 교체할때 Spring Data의 하위 프로젝트들은 save(), findOne()등 기본적인 CRUD의 인터페이스가 같기 때문에 저장소가 교체되어도 기본적인 기능은 변경할 것이 없다(저장소 교체의 용이성)
728x90
'백앤드 개발일지 > 스프링부트' 카테고리의 다른 글
[JPA] 양방향 매핑 OneToOne Lazy 이슈 (0) | 2021.07.19 |
---|---|
스프링 프레임워크 (0) | 2021.07.02 |
스프링 시큐리티 + _csrf설정 (0) | 2021.03.28 |
[Spring Security] Jwt Token & Session + refreshToken (0) | 2021.03.13 |
상속 논리 모델 -> DB 물리 모델링 (0) | 2021.03.10 |
Comments