자바/JPA

스프링: 왜 JPA를 쓰는가?

류창 2022. 1. 5. 21:07
반응형

 

JPA(Java Persistence API)란?

 

Java의 ORM (객체 관계 매핑 Object Relation Mapping) 기술이다.

JPA는  이제껏 개발자들이 힘들게 SQL을 작성하고, 객체와 DB간에 매핑과 설정을해주는걸

대신 처리해주는 기술이다.

이걸 통해, 마치 Collection에 데이터를 넣어놧다 조회하고 수정하는 객체지향다운 DB조작이 가능한셈이다.

 

 

이전에  JDBC를 이용하여 MYSQL과 연결할때 쓰던 코드다.

이렇게 복잡하고 긴 코드를 JPA가 대신 간편하게 설정해준다.

 

객체와 관계형 데이터베이스는 서로 다른 패러다임을 가진다.

1. 상속
2. 연관관계
3. 데이터 타입
4. 데이터 식별 방법

 

 

 

상속의 문제

 

객체 상속 관계에서는 부모와 자식 관계란게 존재한다. 

 

하지만, 데이터베이스엔 부모 자식 관계가 존재하지않는다.

 

유사하게 슈퍼타입 - 서브타입의 관계는 존재하지만 

 

부모-자식 = 슈퍼 -서브 가 아니다.

 

 

 

2.연관관계

 

DB의경우  Member-> Team으로  그리고 Team -> Member로 외래키를 통해 서로 참조(조회, 수정)이 가능하다.

 

하지만, 객체는 Member-> Team을 은되고  Team-> Member가 불가능하다.

 

 

3. 데이터 타입, 데이터 식별의 차이

 

자바에서의 데이터 타입이라고하면, String, Int, Long, Double 이 존재한다.

 

데이터베이서에선, 자바엔 없는 데이터 타입이 존재한다.

 

VarChar, BigInt,..  명칭이 다른게 한 두개가 아니다.

왼쪽이 MySqL 오른쪽이 JAVA

 

 

이런 패러다임의 문제점을 모두 해결해 주는게 JPA다.

 

데이터를 저장할때

 

 

데이터를 조회할때

 

 

눈치를 채셧겟지만,  단순한 CRUD 작업에선  SQL생성을 안해도된다

(CRUD = Create, Read,Update,Delete)

 

지겨운  Insert쿼리, Delete쿼리, Update 쿼리 ..... 모두 다 메소드로 JPA에게 명령시킬수있다.

 

 

데이터를 찾기위해  1줄만 쓰면 알아서 JPA가 쿼리문을 날려서 반환해준다.

 

 

 

 

 

 

더 놀라운건 정보를 업데이트하는데에 있어서다.

 

----------------------------------------------------------

Album album= jpa.find(Album.class,albumID);

album.setName("다른앨범이름");

----------------------------------------------------------

 

album을 조회하고  album의 정보를 업데이트 하는 기능을 구현하면JPA가 알아서 UPDATE쿼리문을 날려준다!

 

 

정말로 마치 객체를 List에 저장해뒀다가  필요할때 꺼내고, 수정하는것과 같다.

 

즉, 객체답게 모델링하고  객체답게 DB와 매핑하고 CRUD작업을 수행시키게 도와주는것이 JPA 기술이다.

 

 

 

 

참조: 인프런 - 김영한님의 Spring JPA 기본편

반응형

'자바 > JPA' 카테고리의 다른 글

JPA 값타입  (0) 2022.06.27
JPA : 상속관계 매핑  (0) 2022.06.15
JPA: 연관관계 매핑 (1:1 , 1:N, N:1, N:M)  (0) 2022.06.14
JPA: 엔티티(Entity) 매핑  (0) 2022.06.14
JPA 의 기초(CRUD) 다루어보기  (0) 2022.01.07