본문 바로가기

JPA/JPA 소개

#03 JPA란 무엇인가?

Index

  • JPA 소개
  • 왜 JPA를 사용해야 하는가?
  • 정리

JPA 소개

JPA는 자바 진영의 ORM  기술 표준이다. JPA는 아래 그림처럼 애플리케이션과 JDBC 사이에서 동작한다.

김영한님의 JPA 프로그래밍 그림 1.6

JPA가 자바 진영의 ORM 표준 이라고 했는데 그럼 ORM은 무엇일까??

잘 모른다면 지난번(서버스터디) 포스팅중에 정리 해놓은 글이 있으니 참고!!

ORM이란? 바로가기

 

#02 ORM 이란?

내가 조금 오해했던 부분은 ORM관련 기술이 최근에 나온게 아니라는 사실이다. 또한 자바 에서만 사용하는 것도 아니고 C#, Ruby 등 다른 객체지향 언어 에서도 사용하고 있다. 이처럼 객체지향 언

debaeloper.tistory.com

 

나는 어떤 기술이 어떤 배경에서 나왔는지 역사? 를 알고 사용하면 조금더 이해하기 쉽다고 생각하기 때문에 JPA라는 기술이 언제, 어떻게, 왜??? 나왔는지 알고 공부하면 더 좋을 것 같다!  

JPA의 등장 바로가기

 

#03 JPA의 등장

EJB2로 개발을 하던 Gavin king은 사용자 친화적이지 않고 무거웠으며 테스트도 어려웠던 개발 방식에서 벗어나 자바 애플리케이션을 편하게 만들고 싶어서 만들었는데 그 이름이 Hibernate 였다.그리

debaeloper.tistory.com

 

위에 두개의 글을 읽고 왔다면 ORM과 JPA가 왜 이세상에 나오게 됐고 우리가 사용하고 있는지 어느정도 궁금증은 해결됐을 것 같다~! 책에서 나오는 간단한 JPA INSERT / SELECT 를 살펴보자.

 

JPA에서의 INSERT ( Member 클래스의 객체 member DTO가 있다고 가정한다 )

 

jpa.persist(member) : member 객체를 DB에 INSERT한다. 다만 우리가 쿼리를 작성하지 않고 JPA가 알아서 DB에 맞게 쿼리를 작성해준다.

Member member = jpa.find(memberId) : memberId를 전달해서 memberId에 해당되는 Member 객체를 return 한다.

 

왜 JPA를 사용해야 하는가?

1. 생산성

JPA를 사용하면 Sql을 개발자가 작성 할 필요없이 JPA가 대신 처리해 주기 때문에 기존에 반복적이고 단순한 작업의CRUD 쿼리를 작성할 필요가 없어진다.

 

2. 유지보수

SQL에 의존적이지 않고 테이블의 변경이 발생해도 SQL은 신경쓰지 않아도 되므로 수정해야 되는 코드가 줄어든다.

 

3. 패러다임의 불일치 해결

우리가 앞서 이야기 했던 무수히 많은 불일치 문제를 확인해봤다...   나는 객체지향 언어를 객체지향처럼 사용하고 싶다.

 

4. 데이터 접근 추상화와 벤더 독립성

RDBMS마다 사용법이 다른 경우가 많은데 이런 부분을 JPA가 알아서 내부적으로 처리하기 때문에 기존에 RDBMS에 종족 적이던 애플리케이션에서 벗어날 수 있다.  실제 김영한 님의 이야기에서 애플리케이션의 DB를 다른  DB로 변경하는데 단지 JPA설정 만으로 가능했다 라고한다. 이건정말... 엄청난 일이다. 

내가 실제로 겪었던 프로젝트에서 고객사는 Oracle DB로 개발을 하고 나중에 Oracle사용이 안된다고 하면 그때 Mysql로 바꿔주세요... 라는 요청이 있었는데 이때나는 이부분은 너무 리스크하고 힘든 작업이다 라고 이야기 했던 기억이 난다.

만약 내가 그 프로젝트에서 JPA를 알았고 매우 잘 사용할 수 있었다면 개발 완료 후 간단한 설정으로 DBMS를 부품처럼 바꿀수 있기 때문에 해당 기술에 대한 사용을 고려했을 수도 있다. (하지만... SI 프로젝트 이기 때문에 한계가 있음.)

김영한님의 JPA 그림 1.10 벤더 독립성

 

 

실제 프로젝트를 JPA로 변경하고 관리할 생각을 하면 나만 설레는걸까?? 분명 생각과 실제 구현이 100% 같다고 할 수 없지만 그래도 김영한님이 이야기한 내용을 바탕으로 내가 서비스 하는 애플리케이션이 업그레이드 될 수 있다면 너무 뿌듯한 일이 됨과 동시에 나의 업무도 줄어들 것 같다. 그리고 업무량이 줄어들면 공부 할 시간도 늘어남... ㅎ

'JPA > JPA 소개' 카테고리의 다른 글

#02 패러다임의 불일치  (0) 2021.05.24
#01 SQL을 직접 다룰 때 발생하는 문제점  (0) 2021.05.16