일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 인스턴스화
- inversion of control
- process
- 프로세스
- 스레드
- 오브젝트
- 클래스
- DI
- 항해99단점
- 객체
- 객체지향 프로그래밍
- jvm
- Thread
- bean
- 항해99솔직후기
- class
- social login
- Dependency Injection
- IoC
- 소셜
- 회고록
- 인스턴스
- API
- 소셜로그인
- Instance
- jwt
- 부트캠프추천
- 쓰레드
- object
- 항해99장점
- Today
- Total
로운's 기술노트
JPA란? 본문
ㅇ JPA(Java Persistence API)란?
: 자바 ORM 기술에 대한 표준 명세로, JAVA에서 제공하는 API이다. (스프링에서 제공하는 것이 아님)
*ORM이기 때문에 자바 클래스와 DB테이블을 매핑한다. (SQL을 매핑하지 않는다)
* ORM이란?
: 객체와 DB의 테이블이 매핑을 이루는 것을 말한다. 즉, '객체'가 '테이블'이 되도록 매핑 시켜주는 것이다.
ORM을 이용하면 SQL Query가 아닌 직관적인 코드(메서드)로서 데이터를 조작할 수 있습니다.
ㅇ JPA장점 (사용하는 이유)
1) 생산성
: 개발자가 일일히 CRUD용 쿼리를 작성해 줘야하던 Mybatis와 같은 Mapper방식은 컬럼이 추가되면 수정해 주어야
하는 부분이 상당히 많았다. 이로 인해서 자바를 사용하지만 객체 중심 개발이 아니라 데이터베이스 흐름으로 개발
을 하게되는 문제가 있다. 그러나 JPA를 사용하게 되면 쿼리를 직적 생성하는 것이 아니고 만들어진 객체로 데이터베이
스를 다루기 때문에 객체 중심으로 개발을 진행할 수 있다.
2) 유지보수
: SQL을 직접적으로 작성하지 않고 엔티티 필드가 되는 객체를 다뤄서 데이터베이스를 동작시키기 때문에 유지보수
가 더욱 간결하다. 이유는 쿼리가 수정되면 그에 따라서 그를 담을 DTO 필드도 모두 변경이 되어야 하지만 JPA를 사용
하게 되면 단순히 엔티티 클래스 정보만 변경하면 쉽게 관리가 가능하기 때문이다.
3) 성능
: 일반적인 Spring의 encache 기능처럼 동일한 쿼리에 대한 캐시 기능을 사용하기 때문에 더욱 높은 성능적 효율성
을 경험할 수 있다.
4) RDBMS 종류와 무관한 코딩
: 객체 중심으로 동작하기 때문에 Oracle, Mysql, Mssql과 같이 서로 다른 벤더사 데이터베이스를 사용하려고 할 때
문법을 바꾸어 주어야 하는 수고를 줄일 수 있다.
ㅇ JPA단점 (제약)
: JPA는 통계 처리와 같이 복잡한 쿼리보다는 실시간 처리용 쿼리에 좀 더 최적화되어 있다.
물론 JPA에서 제공하는 Native query기능을 사용할 수 있지만 통계처럼 복잡하고 미세하게 쿼리 작업이 필요하
다면 Mybatis와 같은 Mapper 방식을 사용하는 것이 더 효율적일 수 있다.
Spring에서 JPA와 Mybatis를 혼용해서 사용할 수 있기 때문에 필요에 따라 적절히 선택하여 사용하는 것으로 해결할
수 있다.
- 출처
https://velog.io/@modsiw/JPAJava-Persistence-API%EC%9D%98-%EA%B0%9C%EB%85%90
'항해99_'22.01~04 > 개념' 카테고리의 다른 글
Process, Thread가 뭘까? (0) | 2022.04.26 |
---|---|
클래스, 객체, 인스턴스를 알아보자 (0) | 2022.04.26 |
TDD vs BDD vs DDD vs ATDD (0) | 2022.02.09 |
Servlet과 JSP 차이 (0) | 2022.02.01 |
Rest API의 put과 patch의 차이 (0) | 2022.01.25 |