웹 프로그래밍/Spring
[JPA] JPA(Java Persistence API)란?
아장아장 초보 개발자
2021. 5. 4. 15:40
728x90
반응형
해당 글을 인프런의 김영한님의 '자바 ORM 표준 JPA 프로그래밍 - 기본편' 강의 내용을 바탕으로 정리하여 작성한 글입니다. 부족한 부분이 있다면 댓글 남겨주세요~
JPA(Java Persistence API)
- JPA는 자바 ORM 기술에 대한 표준 명세로, JAVA에서 제공하는 API이다.
- 기존 EJB에서 제공되던 엔티티 빈을 대체하는 기술이다
- 서로 지향하는 바가 다른 2개의 영역(객체지향 프로그래밍 언어와 관계형 데이터베이스)를 중간에서 패러다임 일치를 시켜주기 위한 기술로, 개발자는 객체지향적으로 프로그래밍 하고, JPA가 이를 관계형 데이터베이스에 맞게 SQL을 대신 생성하여 실행해준다.
그렇다면 ORM은 무엇인가? 본격적으로 JPA에 대해 알아보기 전 ORM에 대해 먼저 알아보자.
사실 ORM에 대해서 다들 한번씩은 얼핏 들었을거다
ORM이란?
- Object-relational mapping(객체 관계 매핑)의 약어로, 말그대로 객체와 관계형 데이터베이스를 매핑하는 것을 말한다
- 객체는 객체대로 설계를 하고, 관계형 데이터베이스는 관계형 데이터베이스로 설계를 한 다음 ORM 프레임워크가 중간에서 이 두개를 매핑해주는 역할을 한다.
(객체와 관계형 데이터베이스 간의 차이는 ORM 프레임워크가 해결해준다)
ex) 객체를 데이터베이스에 저장할 때, INSERT SQL을 작성하는 것이 아니라 객체를 마치 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장하면, ORM 프레임워크가 적절한 INSERT SQL을 생성하여 데이터베이스에 객체를 저장해준다
-> ORM을 사용하면 따로 SQL문을 짤 필요 없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있다
JPA 동작 방식
JPA는 애플리케이션과 JDBC 사이에서 동작을 한다
개발자가 JPA에게 명령을 하면 JPA가 JDBC API를 사용하여 SQL을 호출하고 결과를 반환하여 동작한다
저장 과정
MemberDAO에서 객체를 저장하고 싶을 경우!
과거
- JDBC API나 JDBC Template이나 Mybatis 사용
JPA
- JPA에게 Member 객체를 넘긴다
- JPA가 Member 객체를 분석한다
- 적절한 Insert 쿼리를 생성한다
- JPA가 JDBC API를 사용하여 Insert 쿼리를 DB에 보낸다
- 쿼리를 개발자가 아닌 JPA가 만들어준다
- 패러다임의 불일치를 해결해준다 (이 내용은 차차 알아볼거다)
조회 과정
JPA
- JPA에게 PK 값을 넘긴다
- JPA가 Member 객체를 보고 적절한 select 문을 만든다
- 만들어진 select 쿼리를 JDBC API를 통해 DB에게 보낸다
- DB에게서 결과를 받은 다음 ResultSet을 객체로 매핑해준다
- 역시 패러다임 불일치를 해결해준다 (이 내용은 뒤에 나오니 조급해하지 말자)
JPA가 무엇이고, JPA의 기본적인 동작원리에 대해 살펴보았다.
다음번엔 JPA를 사용하는 이유와 사용했을 때의 장점에 대해 알아보자
728x90
반응형