본문 바로가기

SpringBoot

ch4 01. JPA의 개요와 설정

1. JAP(Java Persistence API)란?

- ORM(Object-Relational Mapping)을 위한 Java 표준 API

- JPA 구현체 : HIBENATE, OpenJpa, EclipseLink, DataNucleus, .. 

- Persistence(영속성) : 애플리케이션 종류 후에도 객체(데이터)가 유지되는 것

 

 

 

2. ORM(Object-Relational Mapping) Framework - HIBERNATE(JPA API 구현)

- 객체와 DB테이블 간의 연결을 해주는 프레임워크

- 객체 모델(object model)과 관계형 모델(relational model)의 차이를 해소

- 사람이 두 모델간의 변환을 직접 하려면 어려우니 대신 편리하게 해주는 것이 HIBERNATE

 

 

 

 

3. 객체 모델과 관계형 모델의 비교

항목 객체 모델(object model) 관계형 모델(relational model)
구조 나누기 쉬움(유연. 작게) 나누기 어려움
상속 지원 지원 안함
비교 동일 비교(==)와 동등 비교(equals()) 동일 비교(==) 
조회 그래프(객체간의 참조 연결) 테이블(2차원 데이터)
관계 단방향(단방향x2로 양방향처리) 양방향(한쪽 테이블에만 FK지정)

 

 

 

4. SQL Mapper(MyBatis) vs. ORM framework(HIBERNATE)

- Mybatis는 DB 중심 개발

1) SQL 직접 작성

2) 데이터를 저장할 클래스 작성

SQL문을 실행해서 DB에서 데이터를 가져온 다음 Dto에 담아준다. 

SQL을 직접 작성하면 조금만 잘못 입력해도 실행이 안되니 까다롭다. 

이렇게 개발하는 이유는 오래된 기업들은 DB에 데이터가 많이 쌓여있고, 기존에 있는 데이터를 바꾸는 것이 쉽지않다. 

CUI -> GUI -> Web/모바일로 데이터를 사용하는 클라이언트 환경은 계속 변화해왔는 데이터를 저장하는 데이터베이스 쪽은 계속 대부분 RDB로 유지하고 있다. 그래서 RDB 중심으로 개발이 많이 이루어졌다. 

성능이나 복잡한 일처리 부분에 있어서는 장점이 있다.

 

 

 

 

- HIBERNATE는 애플리케이션 중심 개발

1) 자바 클래스 작성

2) 테이블 자동 생성

변경 사항이 발생했을 때 엔티티를 변경하면 HIBERNATE가 자동으로 변경을 해준다. 

SQL을 직접 만들지 않고, 자동으로 SQL문도 생성해준다!

유지보수나 변경에 유리하다는 장점이 있지만, 복잡한 처리나 성능은 DB 중심 개발보다는 떨어진다. 

 

 

 

5. Spring Data와 Spring Data JPA

- Spring Data : 저장소 종류가 달라도 일관된 데이터 처리 방법을 제공

- Spring Data JPA - JPA를 위한 저장소(JpaRepository)와 관련 기능을 제공

https://spring.io/projects/ 

 

Spring | Projects

Projects From configuration to security, web apps to big data—whatever the infrastructure needs of your application may be, there is a Spring Project to help you build it. Start small and use just what you need—Spring is modular by design.

spring.io

Spring Data에서 제공하는 Repository

저장소 종류가 달라도 이런 것들을 똑같이 제공하기 때문에 사용하기만 하면 저장소 종류가 달라도 편리하게 사용 가능

 

 

 

<실습>