JPA를 사용하는 이유에서 객체 지향 언어와 관계형 데이터 베이스간의 충돌을 살펴 보았습니다. 이번엔 JPA가 앞서 설명드렸던 둘 사이의 간극을 어떻게 해결했는지 알아보죠.

🚀JPA 등장

객체와 데이터베이스를 매핑하기 위해서 Java는 JPA(Java Persistence API)라는 ORM(Object-Relational Mapping)을 제시합니다. JPA의 시작은 Hibernate라는 오픈소스 프로젝트입니다. 어려운 개념은 아니니 영어가 쏟아진다고 떨지 마시고 따라와 주세요!

🧐Hibernate?

사실 JPA 이전에도 이미 객체와 데이터베이스를 연결해주는 ORM인 EJB Entity Beans가 존재했습니다. 상당한 불편을 해소할 수 있었는데도 대중화되지 않은 것은 EJB가 사용법이 너무 어려워서 시장에서 사장된 기능이기 때문입니다. 이를 훨씬 가볍게 구현하여 사용법은 편하게 하면서도, 더 많은 기능을 지원하게 한 여러 ORM 중에서 가장 대중화된 것이 Hibernate입니다.

Hibernate가 개발된 후에, Java 스펙에도 ORM의 표준 스펙을 정의하여 JPA를 만들어냈는데 이 때 사용된 JPA의 구현체가 Hibernate입니다. 사실 실제로 ORM으로 사용되는 것은 Hibernate가 대부분이기 때문에 JPA와 Hibernate를 구분하려고 노력하는 건 의미가 없습니다.

👀본격적으로 JPA 소개

Java 애플리케이션이 JPA에게 명령하면 JPA는 JDBC API를 사용해서 자동으로 SQL query를 작성하고 이를 DB에 전송합니다. DB는 결과를 반환하여 역방향으로 Java 애플리케이션으로 전송하죠.

❗️Ex. insert

MemberDAO에서 객체를 저장하고 싶을 때, 개발자는 JPA에 Member 객체를 넘깁니다. JPA는 이 객체를 분석하고 INSERT SQL을 작성하며 JDBC API를 사용하여 DB에 넘기는 과정을 수행하게 되죠.

JPA 사용 방법

JPA를 사용하기 위해선 Java 프로그래밍중 JPA 관련 애노테이션을 사용해야 합니다. JPA 관련 어노테이션은 이미 정리해놨으니 url을 참고하시길 바랍니다.

0개의 댓글