FrameWork/Spring Boot

[Spring Boot]JPA의 기본 개념

JiWonSon 2021. 1. 18. 02:57

* JPA(Java Persistence API)란 무엇인가?

DB테이블과 자바 객체 사이의 매핑을 처리해주는 ORM기술의 표준입니다.

요악하자면, 자바의 클래스와 DB의 테이블을 매핑하는 기술입니다.

 

* ORM이란 무엇인가?

Object Relational Mappping

객체와 관계형데이터베이스를 매핑, 즉 객체와 DB의 테이블이 매핑을 이루는 것입니다.

 

* JPA를 왜 사용할까?

 개발을 시작하거나 컬럼이 추가되면 CRUD SQL을 반복적으로 사용합니다.

신규 컬럼 하나만 추가되더라도 DTO, DAO, 수정작업이 매우 번거롭습니다.

 이 때문에 객체와 테이블을 매핑시켜주는 ORM이 주목받고, JAVA에서는 JPA라는 표준 스펙을 정의하게 되었습니다.

 

* JPA의 특징

 자바 객체와 DB테이블 사이의 매핑 설정을 통해 SQL을 생성합니다.

JDBC 과정에서 개발을 하면 대부분 코드가 비슷한데

EX) DB커넥션 > 쿼리 작성 > 파라미터 설정> 실행한 결과를 자바 객체에 설정

여기서 문제점은 위에서도 언급했듯이 컬럼명이 변경되면 관련되어 있는 쿼리를 모두 수정해야합니다.

JPA는 여기서 매핑설정만 변경해주면 해결됩니다.

또한 실행한 쿼리를 자바 객체에 설정해주어야 하는데 JPA는 자바 객체로 매핑하여 검색가능합니다.

 

 

* JPA의 장점

1) 생산성이 뛰어나고 유지보수가 용이합니다.

  • SQL을 직접 작성하지 않고 객체를 사용하여 동작하기 때문에 유지보수가 간결해짐
  • 각각 객체에 대한 코드를 별도로 작성해 코드의 가독성도 올라감
  • SQL수정하는 과정이 줄어들고, 값할당, 변수선언 등의 부수적 코드가 상당히 줄어듬
  • 객체지향적으로 데이터를 관리하여 전체 프로그램 구조를 일관되게 유지 가능

2) DMBS에 대한 종속성이 줄어듭니다.

  • DBMS가 변경된다 하더라도 소스, 쿼리, 구현방법, 자료형 타입 등을 변경할 필요가 없다.

* JPA의 단점

1) 어렵다

  • JPA의 장점을 잘 사용하려면 학습이 많이 요구된다.
  • 복잡한 쿼리를 사용해야 할 때 불리하다.
  • 잘못 사용 시 실제 SQL문 작성하는 것 보다 성능이 떨어질 수 있다.

 

* 결론

업무 환경, 장단점을 고려하여 Mybatis를 사용하는게 더 효과적일 지 JPA를 사용하는게 더 적합한지 상황마다 잘 판단하자

 

[참고]

goddaehee.tistory.com/209

 

[스프링부트 (7)] Spring Boot JPA(1) - 시작 및 기본 설정

[스프링부트 (7)] Spring Boot JPA(1) - 시작 및 기본 설정 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ 스프링 부트 JPA 설정 방법] 입니다. : ) 0. 기본개념 JPA를 들어가기 전에 ORM부터 간단하게 알아보

goddaehee.tistory.com


https://github.com/gyoogle/tech-interview-for-developer/blob/master/Web/Spring/%5BSpring%20Data%20JPA%5D%20더티%20체킹%20(Dirty%20Checking).md

'FrameWork > Spring Boot' 카테고리의 다른 글

[Spring Boot] JPA Entity  (0) 2022.08.04
[Spring Boot] SOAP API & REST API  (0) 2021.01.23
[Spring Boot] Spring과 Spring Boot 차이  (0) 2020.12.11