^^; 예전에
글을 열심히 썼었는데...
ㅠㅠ 다날라갔다 다시 정리하는겸
써야지~
jpa공부해보니 꼭 실제 업무할때 써보고싶었다
그래야 더 잘 느낄 수 있을거 같다.
1. JPA 란 ? ( 그외 개념들)
JPA (Java Persistence API) : 자바 어플리케이션에서 관계형 데이터 베이스를 사용하는 방식을 정의한 인터페이스
JPA가 인터페이스면 이를 구현한 것도 있지 않을까?
그게바로 Hibernate이다.
Hibernate : JPA라는 명세의 구현체이다.
쉽게 설명하자면, JPA와 Hibernate는 자바의 interface와 interface를 구현한 class와 같은 관계이다.
즉, 반드시 Hibernate를 쓸 필요는 없다. 그런데 대부분 사용하고 있긴하다.
Spring Data JPA : JPA를 더 쉽고 편하게 사용할 수 있도록 도와주는 모듈이다.
JPA를 한단계 추상화시킨 Repository라는 인터페이스를 제공한다.
대부분 개발할때 Repository를 이용한다,,
2. JPA를 왜 쓸까?
jpa는 DB와 객체사이를 mapping해주는 중간자 역할을 해준다.
그래서 기존에 jdbc를 쓸때 쿼리를 이용해서 data에 접근하였었는데
쿼리를 이용하지 않고, 개발할 때 객체지향적인 관점에서만 접근하게 해준다. 그래서 더 효용이 좋다.
그런데 여기서 쿼리만 써본 사람들은 의문이 들 것이다.
현재 운영되고 있는 복잡한 쿼리들을 어떻게 JPA로 대체할 수 있을까?
나도 이거에 대한 의문점이 있었는데
우선, 간단한 조인 같은건 Querydsl로 적용이 가능하다.
그리고 애초에 DB설계자체를 객체지향적으로 하면
애초에 그렇게 복잡한 쿼리가 나오지 않을 거란 설명이 설득력 있었다.
아래 참고 블로그에서 특히 JPA를 왜 쓰는지에 대해서 자세히 나와 있었는데
그중 와닿는 말은 다음과 같다.
JPA로 실무를 하다 보면, 테이블 중심에서 객체 중심으로 개발 패러다임이 변화된다.
테스트, 통합 테스트시에 CRUD를 믿고 간다.(내가 짠 쿼리는 그것 마저 테스트를 거쳐 가야 한다.)
- 이런거 테스트 할 시간에 CRUD 믿고, 핵심 비즈니스 테스트 코드를 열심히 짜자.
빠르게 에러를 발견할 수 있다.
- 컴파일 시점에 대부분 오류를 발견할 수 있다
-최소한 뭐리 문법 실수나 오류는 거의 발생하지 않는다.
https://ict-nroo.tistory.com/117
다음 블로그에 자세히 나와있으니 읽어보는 것을 추천한다.
그리고 실제로도 나도 간단한 개발을 해보았는데 혼자서..
쿼리를 짤때 자잘한 문법오류나 매핑해주는 데에서 오타가 나서
오류가 나거나 하는 사소한 실수를 전혀 신경쓰지 않아도 되어서 좋았다.
https://suhwan.dev/2019/02/24/jpa-vs-hibernate-vs-spring-data-jpa/
'DEVELOP > Backend' 카테고리의 다른 글
[Spring] Task 실행과 스케줄링 ( TaskExecutor , TaskScheduler) (0) | 2020.05.28 |
---|---|
Spring Security 에서 OAuth 2.0이란? (0) | 2020.05.18 |
Django에서 Swagger 적용 (drf-yasg 쓰기 꼭^^;) (0) | 2020.03.26 |
Django CORS 설정하기 (0) | 2020.03.26 |
python pip Proxy 설정하기 (0) | 2020.03.24 |