< JPA, ORM >
JPA 개념 간략하게 먼저
JPA
대략적인 개념
- 자바 퍼시스턴스 API (Java Persistence API)
- 계층모델에서, 퍼시스턴스 부분
- 데이터베이스 관리 기술
- 데이터베이스 또는 데이터를 자바의 핵심인 객체지향적인 관점에서 바라보고 다룰 수 있게 해준다.
- 즉 데이터베이스를 마치 객체 다루듯이 다르면서 사용하도록 하는 기술
조금더 자세하게
- 자바에서, ORM기술 표준으로 사용하는 "인터페이스" 모음
- RDB를 사용하는방식을 정의한 인터페이스
- 실제적으로 구현된 것이라기보단, 구현된 내용을 사용하기 위한 일종의 프레임워크
- JPA를 구현한 대표적인 오픈소스로 하이버네이트 Hibernate, OpenJPA
ORM
ORM 개념 간단히
Object-Relational Mapping
객체, 즉 클래스와 RDB의 테이블을 매핑시켜준다.
둘 간의 관계를 자동으로 영속화해준다.
-> 즉 객체를 건드리면, 테이블을 건드는 셈이 된다.
(용어) 영속성
- 데이터를 생성한 프로그램이 종료하더라도, 사라지지 않는 데이터의 특성
- 영속성을 갖지 않는다. -> 걍 죽는다. 메모리에서만 활동하고 사라진다.
그래서 Persistence 계층이 Persistence, 즉 영속 계층이라고 불리는 이유
ORM 장점
- SQL과의 관계
-- 객체지향적으로 다룬다는 것은, 클래스와 메서드로 다룬다는 뜻이다.
-- 그래서 SQL대신 메서드를 통해서 DB를 다룰 수 있다.
-- 물론 DB자체는 외부 언어를 이해할 수 없고, SQL문만을 이애할 수 있다. 그래서 JPA를 통해서 내부적으로 메서드를 통-한 명령이 SQL로 전환되어 작업된다.
-> 특히나 반복적인 CRUD SQL문을 자동화하여 생산성이 높아짐.
- 코드 효율
-- SQL을 사용할 때 필요한 여러가지 부수적인 코드를 쓸 필요가 없다.
-- 객체지향적으로 코드만 작성하면 되기에, 로직 자체에 집중하여 생산성이 증가한다.
- 약간 DB와의 독립성
-- ORM이 없는 일반적인 경우, DB를 다른 것으로 바꾸게 되면 DB에 맞는 쿼리를 다시 작성해야한다.
-- ORM이면, DB에 맞는 연결만 해주면 되니까, 쿼리를 수정할 필요가 없다.
ORM 단점
- 복잡하고 무거운 쿼리는, 속도를 위해 별도의 튜닝이 필요하다.
(로직이 복잡할 수록 자동적으로 생성되는 쿼리는 효율적으로 만들어지지 못한다. 결국 쿼리를 손대야한다.)
- 설계가 잘못된 경우, 속도 저하 및 일관성이 떨어진다.
- 배우기 어렵다.
'정리 { Java 백엔드 } > (인강) JPA 프로그래밍 +스프링부트' 카테고리의 다른 글
| JPA활용1 복습 (0) | 2023.04.03 |
|---|---|
| H2 데이터베이스 설치 _(SpringBoot+JPA) (0) | 2022.12.08 |
| 2~3강. 라이브러리, 타임리프 설정 _(SpringBoot+JPA) (0) | 2022.12.04 |
| 1강. 프로젝트 환경설정 _(SpringBoot+JPA) (0) | 2022.12.01 |
| 1129_ 스터디 그룹 미팅 __(SpringBoot+JPA) (0) | 2022.11.29 |
댓글