로운's 기술노트

JPA란? 본문

항해99_'22.01~04/개념

JPA란?

로운's 2022. 1. 22. 21:10

ㅇ 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
Comments