본문 바로가기

Programming/과거포스팅

[JPA] JPA란?

JPA란?


최근들어 우리나라에서도 JPA가 점점 보편화 되고 있다. JPA는 상당히 오래전에 나온 훌륭한 기술이지만 우리나라에 상륙하기까지는 상당히 오랜 시간이 걸렸다. 이미 10년도 전에 나오고 자바 진영의 ORM 기술 표준이지만 상당한 진입장벽 덕분에 보급이 더디었는데 최근 몇년 사이에 여러 기업에서 기본스펙으로 지정하면서 알려지기 시작했다. 사실 그렇게까지 어려운 기술이 아니긴 하지만 SI개발로 찍어내기식의 개발자가 많은 우리나라에서는 상당히 부담이 될 수 있는 기술이다. 하지만 언제까지고 새로운 기술을 거부하지는 못한다. 그리고 몇개월 전 각종 세미나에서 JPA를 널리 알려주신 김영한님이 JPA와 관련된 책을 내면서 좀 더 많은 개발자가 좀 더 쉽게 JPA를 접할 수 있게 되었다. 나도 이 책을 참고삼아 JPA에 대해서 글을 작성할까 한다.


JPA (Java Persistence API)는 자바 진영의 ORM 기술 표준이다. ORM은 Object-Relational Mapping의 약자로 객체오 관계형 데이터베이스를 매핑한다는 의미이다.

책의 앞장을 보면 관계형 데이터베이스와 객체지향 프로그래밍의 패러다임의 불일치에 대해서 설명이 나온다. 이부분을 자세히 읽어보면 JPA의 역할을 확실히 알 수가 있다. 객체와 테이블을 매핑해 패러다임의 불일치를 해결하게 도와주는 기술정도로 정리 할 수 있을꺼 같다. 즉 JPA는 자바어플리케이션의 객체와 DB의 사이에서 이 패러다임의 불일치를 해결해 주고 있다.


JPA는 인터페이스이고 구현체로 상용되는 것이 ORM프레임워크이다. ORM프레임워크에는 EclipseLink, DataNucleus,  하이버네이트가 있는데 가장 널리 알려지고 사용되는 것이 하이버네이트이다.

JPA를 사용하는 이유
  • 생산성 향상 - 기본적인 CRUD를 직접 작성하지 않아도 된다.
  • 유지보수 - SQL을 JPA가 생성해주기 때문에 유지보수코드가 적어진다.
  • 데이터 접근 추상화와 벤더 독립성 - 아주 중요한 장점인데 말이 조금 어렵다. 쉽게 풀이하면 추상화된 데이터 접근 계층을 제공해서 애플리케이션이 데이터베이스 기술에 종속되지 않도록한다. 즉 데이터 베이스가 바뀌어도 전혀 수정을 하지 않고 작업을 할 수가 있다. 물론 복잡한 쿼리들은 해당되지 않지만 예를 들어 페이징 처리 같은 경우 데이터 베이스마다 다른 쿼리가 필요한데 이러한 것들을 JPA가 모두 처리해 준다. 그렇기 때문에 JPA를 사용해서 개발할 때 로컬에서는 H2 데이터베이스를 사용하고 개발이나 상용은 오라클이나 MySQL과 같은 데이터 베이스를 사용한다.