(JPA) JPA가 뭐야?? 이거 왜 쓰는거야?

2021. 11. 18. 21:18Java

반응형

우리는 JAVA 혹은 Spring(boot)를 공부하면서 JPA란 단어를 처음 접했거나, 수 없이 접해왔거나, 접할 것이다.

그렇다면 대체 JPA가 뭐야??

 

 

 

📕대관절 JPA가 무어란 말이냐???


"JPA(Java Persistence API)는 자바 진영의 ORM 표준 기술이다."

 

이렇게 예기하면 누구는 '아~~' 하고 알아들을 것이고, 누구는 "뭐? ORM?  그게 뭔데?" 라고 물을 것이다.

ORM은 Object-relationla Mapping 그러니까, 객체랑 관계형 DB를 '매핑'해주는 프레임워크이다.

 

"'매핑'을 그냥 해준다고??" 

그렇다.

 

JPA를 쓰기 전까지 JDBC를 활용해서 쿼리문을 직접 작성해서 DB에 저장된 객체를 찾아서 CRUD를 진행했다면,

JPA를 활용한다면 이 JDBC 과정이 생략(축약) 되어 버리는 것이다!(그리고 무엇보다 간편하다.)

 

이게 전부야? 라고 생각했다면  경기도 오산이다.

 

JPA는 단순히 SQL을 생성해서 DB에 전달해주는 것 뿐만 아니라 다양한 패러다임을 불일치 문제들도 해결할 수 있기 때문에

이를 활용하면 객체 측면에서 더욱 정교한 객체 모델링을 할 수 있고, 개발자는 이런 일련의 과정에서 해방되고

오직 개발에만 집중할 수 있는 최적의 환경이 갖추어진다!!! (개발은 열심히 해야함)

 

현재 JPA 2.1 버전에서는 Hibernate, EclipseLink, DataNucleus 가 있고 이 중 Hibernate가 가장 대중적으로 사용된다.

 

 

 

📕 왜 JPA를 사용해야 하는가??


-생산성에서의 이점

 

JPA를 사용하기 전에는 우리는 쿼리문을 통해서 데이터를 하나하나 가져와야만 했다.

하지만 JPA를 사용하면 마치 자바 컬렉션(List, ArrayList, Map)등에 저장하듯이 저장하고, 가져올 수 있다.

쿼리문을 작성하는 시간이 줄어들고 쿼리문에 들이는 노력을 다른 곳에 쏟을 수 있는 것이다.

 

-유지보수

 

SQL문을 직접 작성하면, 엔티티에 필드를 하나만 추가해도, 관련한 SQL매핑에서 수정해야할 부분이 한 두가지가 아니다.

이로 인해서 유지보수가 힘들어지고, 재사용이 불가능한 코드가 양산되는 것과 마찬가지인 효과가 발생한다.

하지만 JPA를 활용하면 이에 관해서 처리해야 할 것이 현저하게 줄어들기 때문에 유지보수에 용이하다.

 

-성능

 

JPA는 DB와 어플리케이션 사이에서 동자갛기 때문에 성능 최적화의 기회를 제공할 수 있다. 단적인 예시로 DB에서 찾은 같은 데이터를 다른 필드에 저장한다고 가정하면, 쿼리문을 활용했을때는 두번 검색을, JPA를 활용했을때는 한번의 검색으로 데이터를 재사용해서 저장할 수 있다.

 

 

 

반응형