-
Notifications
You must be signed in to change notification settings - Fork 0
14. [Spring Boot] JPA란?
SeongWon Oh edited this page Sep 17, 2021
·
1 revision
JPA의 개념을 알고자 한다면 먼저 ORM의 개넘을 알고 넘어가야한다. ORM은 Object Relational Mapping의 약자로 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 말합니다. 객체지향 프로그래밍은 클래스를 사용하며 관계형 데이터베이스는 테이블을 사용하여 두 모델간에 불일치가 발생하게 됩니다. 이러한 문제는 ORM을 통해 객체간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결해줄수 있습니다.
- SQL Query가 아닌 직관적인 코드로 데이터를 조작할 수 있어 개발자가 객체지향 프로그래밍을 하는데 집중할 수 있더록 도와주며 코드를 급격히 줄일 수 있다.
- SQL의 절차적이고 순차적인 접근이 아닌 객체 지향적인 접근으로 인해 생산성이 증가한다.
- ORM을 독립적으로 작성하기에 객체들을 재활용할 수 있고 유지보수가 편리해진다.
- DBMS에 대한 종속성이 줄어든다.
- 프로젝트의 복잡성이 커질경우 난의도가 올라가며 잘못 구현된 경우 속도 저하와 일관성이 무너질 수 있다.
- 프로시저가 많은 시스템에서는 프로시저를 다시 객체로 바꿔야해서 생산성 저하나 여러 리스크가 발생할 수 있기에 ORM의 객체지향적인 장점을 활용하기 어렵다.
JPA(Java Persistence API)란 자바에서 사용하고 있는 ORM의 표준으로 인터페이스의 모음이다. JPA의 인터페이스를 구현한 대표적인 오픈소스가 Hibernate이다.
- JPA의 실제 구현 class를 모아둔 것이 Hibernate이다.
- JPA라는 ORM 기술 표준을 구현한 것이 Hibernate이므로, JPA를 사용하려면 개발자는 Hibernate를 사용하면 된다.
- Hibernate에서 자주 사용하는 것들을 Spring boot가 묶어서 보관하는데 그것이 Spring data jpa이다.
- JPA의 동작은 JDBC와 애플리케이션 사이에서 동작하며 개발자가 JPA를 사용하면 JPA가 JDBC API를 사용해 SQL을 호출하여 DB와 통신을 하는 방식으로 동작한다
- 개발자는 JDBC API를 사용하는 것이 아닌 JPA만을 사용한다.
JPA를 사용하여 객체를 저장하고 싶을 때는 다음과 같다.
- 개발자가 JPA에 객체를 넘긴다
- JPA는 Member entity를 분석한다
- JPA가 분석된 정보를 통해 Insert SQL을 생성한다.
- JDBC API를 사용하여 SQL문을 DB에 날린다.
heejeong Kwon님의 블로그를 참조하였습니다.