본문 바로가기
JPA

[JPA] JPA에 관해서

by 뜨는 해 2021. 4. 15.

 

jpa란 무엇일까?

 

위키피디아의 의하면 jpa는 "Java Persistence API" 라고 한다.

뜻으로만 보면 잘 모르겠는데 "persistence"에 의미를 잘 알아야할 것 같다.

 

persistence는 "고집", 또는 "없어지지 않고 오래 지속됨" 이라고 한다.

 

결국 자바의 어떠한 것을 영원히 유지하게 해준다는 뜻인데, 이는 데이터베이스와의 관계를 생각해보면 좋다.

 

데이터베이스의 자료들은 변경이 있지 않는 한 영원히 간다고 볼 수 있다.

 

즉, 데이터베이스와 연관이 있는 API이며, 그 뜻 그대로 데이터베이스 자료를 다루는 API라고 볼 수 있다.

 

이런 JPA 자체는 인터페이스들의 집합으로서, 따로 구현되어 있지 않다.

 

 

이런 인터페이스를 통해 구현한 구현체들이 있는데 대표적으로 hibernate, eclipseLink, dataNucleus 등이 있다고 한다.

 

나는 hibernate밖에 쓰지 않았으므로, hibernate(이하 하이버네이트)에 대해서 설명해볼까 한다.

 

하이버네이트는 게빈 킹이라고 하는 사람이 jpa와 비슷한 API를 쓰다가 자신이 더 잘 만들 수 있겠다 생각해서 만들었다고 한다...

 

처음에는 표준 레퍼런스로 인정받지 못했지만 점차 사람들에게 인정받으며, 하이버네이트 자체가 ORM의 표준 레퍼런스로 자리잡게 된다.

 

사실상 JPA도 하이버네이트를 그대로 표준화 시켰다고 보면 된다.

 

JPA는 데이터베이스와 객체 지향 프로그래밍의 패러다임을 해소하는 역할을 하고 있다.

 

RDB와 객체 지향 프로그래밍의 개념이 다른 점이 많기 때문에 이 둘을 완화시켜준다고 생각하면 쉽게 이해 할 수 있다고 생각한다.

 

이런 특징으로 인해 생기는 여러가지 장점이 있는데 대표적으로

 


  • 사실상 개발에 많은 시간을 써야 했던 SQL 작성부분을 획기적으로 단축 시킬 수 있게 되었다.
  • 성능적인 부분에서 기존 JDBCTemplate, 네이티브에 대해서도 우위를 점할 수가 있다.
  • 개발자는 개발에 전념이 가능하다.
  • Pagenation에 대한 막대한 이익을 얻을 수 있다.

라고 생각된다.

 

앞으로 JPA의 개념과 특징을 정리하면서 곱씹어 볼까 한다.

'JPA' 카테고리의 다른 글

[JPA] 영속성 컨텍스트  (0) 2021.04.19