JPA 란?

나길진·2023년 12월 19일
0

본 내용은 인프런의 김영한 님의 강의내용이 포함되어 있습니다.
자바 ORM 표준 JPA 프로그래밍 - 기본편

JPA(Java persistence API)란 무엇이고 왜 사용해야 하는지 알아보려고 한다.
JPA란, 자바에서 ORM(Object Relation Mapping)의 기술 표준으로 인터페이스들의 모음이다. 대표적은 오픈소스로는 Hibernate가 있다.

ORM

ORM이란 객체와 RDB의 페러다임 불일치로 객체지향적 코딩이 힘들어짐으로써 두 개의 패러다임을 매핑시켜줌으로써 객체지향적인 코딩을 할 수 있도록 도움을 주는 기술이다.

사용이유

JPA라는 기술이 나오기전에는 MyBatis, JDBCTempleate 등의 기술이 주로 사용되었고 지금도 많은 프로젝트에서 사용중이다. 이런 기술들의 문제는 쿼리를 직접 하나하나 다 작성해야한다는 것이였다.
예를들면 기존 Table에 컬럼이 하나 추가된다면 각각의 CRUD쿼리에 모든 수정이 들어가야하고 수정하는 와중에 다양한 에러가 발생할 수 있는 환경에 처해진다.
개발하는데 쿼리를 작성하는 시간, 유지보수하는 시간이 너무 불필요하다고 느낌으로써 JPA라는 기술이 나타났다고 한다.

동작원리

아래 그림은 객체를 저장시 JPA가 동작되는 모습이다. DAO에서 Entity가 생성되거나 삭제되는 과정이 일어나면 JPA는 Entity 분석과 함계 동작에 맞는 SQL을 생성해준다. SQL을 JDBC API를 통해서 DB로 SQL을 보내고 DB로부터 결과를 받아온다.
JPA저장

출처 : https://ultrakain.gitbooks.io/jpa/content/chapter1/chapter1.3.html


조회시에는 마찬가지로 DAO에서 조회 요청이 들어오면 SELECT SQL을 생성해주고 DB에 쿼리를 보내고 해당 Entity로 결과값을 매핑시켜서 DAO에 넘겨준다.
JPA조회

출처 : https://ultrakain.gitbooks.io/jpa/content/chapter1/chapter1.3.html


주의할 점

JPA를 사용할 때에는 트랙잭션이 굉장히 중요하다. 트랜잭션 내에서 작동시키는게 아니라면 원하는 결과를 얻을 수 없다. 또 데이터를 수정시에는 별다른 요청없이 Entity에서 값을 수정만 해줘도 JPA가 변경부분을 감지해서 트랜잭션이 끝나서 커밋됨과 동시에 수정을 처리한다.

profile
백엔드 개발자

0개의 댓글

관련 채용 정보