새소식

반응형
Java/Spring

Spring Data JPA, ORM(Object-Relational Mapping)

  • -
반응형

ORM(Object-Relational Mapping) 이란

어플리케이션 클래스와 SQL 데이터베이스의 테이블 사이의 맵핑 정보를 기술한 메타데이터를 사용하여

자바 어플리케이션의 객체를 SQL 데이터베이스 테이블에 자동으로 영속화 해주는 기술이다.

 

객체는 객체대로 설계하고 관계형 데이터베이스는 관계형 데이터베이스대로 설계한다.

여기서 따로 설계한 객체와 데이터베이스는 ORM 프레임워크가 중간에서 매핑해준다.

 

SQL문이 아닌 Method를 통해 DB를 조작할 수 있어 개발자는 객체 모델을 이용하여 비즈니스 로직을 구성하는데만

집중할 수 있다.

 

예를 들어 User 테이블의 데이터를 출력하기 위해선 MySQL에서는

"SELECT * FROM user" 라는 쿼리문을 실행해야 하지만, ORM 을 사용하면

User 테이블과 매핑된 객체를 user 라고 할때 "user.findAll()" 메서드를 실행하면 데이터 호출이 가능하다.

 

장점

- SQL문이 아닌 Method를 통해 DB를 조작할 수 있어 개발자는 객체 모델을 이용하여 비즈니스 로직에 집중할 수 있다.

   (내부적으로는 쿼리를 생성하여 DB를 조작한다.)

- 기존에 MySQL DB를 사용하다가 PostgreSQL로 변경하게 되어도 ORM을 사용중이면 쿼리를 수정할 필요가 없다.

- 직접 쿼리문을 작성하지 않고 메서드 호출만으로 데이터를 요청할 수 있으므로 생산성이 매우 증가한다.

 

단점

1.  쿼리문이 복잡해지면 ORM 으로 표현하는데 한계가 있고, 성능이 raw 쿼리에 비해 느리다는 단점이 있다.

 

 

Spring Data JPA란?

: JPA는 Java Persistence API의 약자로 자바 진영의 ORM 기술 표준이다.

: JPA가 제공하는 API를 사용하면 개발자가 직접 SQL문을 작성하지 않아도 객체와 매핑된 테이블에

 객체의 내용을 저장할 수 있다.

: JPA는 내부적으로 JDBC API를 활용하는데 개발자가 직접 JDBC API를 활용하면 패러다임 불일치,

  SQL 의존성 등으로 인해 효율성이 떨어진다. 이때, JPA를 활용하면 SQL문을 자동으로 생성하고

  패러다임 불일치까지 해결해줘 생산성을 크게 높인다.

 

* 패러다임 불일치

먼저 패러다임에 대해 알아보자

패러다임이란 어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의

인식의 체계 또는 사물의 대한 이론적인 틀이나 체계를 의미한다.

정확한 내용은 다시 작성하도록 하겠다.

 

JPA는 반복적인 CRUD SQL을 처리해준다.

JPA는 매핑된 관계를 이용해서 SQL문을 생성하고 실행하는데, 개발자는 어떤 SQL문이 실행될지를 예측하고

사용하면 된다.

혹여나 직접 SQL문을 직접 작성하여 사용해야 하는 경우 JPA는 네이티브 SQL이란 기능을 제공하는데 

직접 SQL을 작성할 수 있다.

 

* CRUD(Create=생성, Read=읽기, Update=수정, Delete=삭제)

 

 

 

반응형

'Java > Spring' 카테고리의 다른 글

MVC 패턴  (0) 2022.03.21
Spring Boot  (0) 2022.03.21
Spring 이란  (0) 2022.03.19
Apache POI Excel 파일 업로드 중 "Zip bomb detected.." 에러  (0) 2021.12.29
MyBatis  (0) 2021.12.27
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.