JPA란?
JPA는 Java Persistence API의 약자이다. 일단 약자만 봤을땐 느낌이 오지 않는다.😅
Persistence? 영속성? 일단은 잘 모르겠으니 패스. 다음으로는 API이다. 즉, 인터페이스다.
그러므로 JPA 기술을 사용하기 위해서는 이 인터페이스를 구현한 구현체가 필요하다는 뜻이다.
JPA 구현체는 어떠한 것들이 있을까?
1. Hibernate
2. EclipseLink
3. DataNucleus
4. OpenJPA
5. ...
등등 이외에도 여러가지 종류가 있으나, 가장 유명하고 널리 사용되는건 역시 Hibernate이다.
각각의 구현체끼리도 성능적인면이나 안정성에 분명 차이가 있겠지만 그것까진 나도 알지 못하고 이 글의 목적에 벗어나므로 넘어가겠다.
다음으로 JPA는 자바 ORM 기술에 대한 명세이다. ORM은 Object Relational Mapping의 약자이다. Object(객체)와 Relational(관계형 DB)의 Mapping 정도로 이해하면 좋을듯싶다.
즉, 객체와 테이블이 맵핑이 되어 원하는 데이터를 SQL을 이용한 테이블 조회가 아닌 객체로부터 가져올 수 있다는 의미이다. 이 말도 아직은 잘 이해가 되지 않을 수 있다😂 이해가 안되면 일단 넘어가보자! 아 참고로 ORM 자체는 JAVA에 한정 된 기술은 아니다. 당연히 다른 언어나 프레임워크에서도 이러한 ORM 기술 표준에 대한 인터페이스는 존재할것이고 (그게 무엇인지 나는 잘 모르겠으나) JAVA 진영에서는 그것을 JPA라고 부르는 것일뿐.. 내가 처음에 이 부분이 헷갈려서 더 주절주절 써봤다.
여기까지 JPA에 대해 간략하게 알아보았다. 내가 써놓고도 굉장히 추상적으로 느껴질 수 밖에 없는데.. 다음 글에서는 좀 더 구체적으로 JPA 장단점에 대해 알아보고 그 이해를 바탕으로 이 글을 다시 읽었을 땐 더 이해가 잘 되도록 노력해보겠다.