온 코딩

[이론] ORM,JPA, Hibernate, Spring Data JPA 본문

복습 ARCHIVE/모델별 프로젝트

[이론] ORM,JPA, Hibernate, Spring Data JPA

SummerON 2021. 7. 7. 10:10

ORM

객체지향 개념을 이용하여 관계형 데이터베이스에 적용하는 기술 

 => 객체지향을 관계형으로 매핑하는 개념

 

객체지향 구조와 관계형 데이터베이스와 유사 

 

객체지향 

데이터구조 -> 클래스 

데이터 -> 클래스 멤버변수(데이터타입)

데이터 보관 -> 인스턴스

 

관계형 데이터베이스

데이터구조 -> 테이블 

데이터 -> 컬럼(데이터타입) 

데이터보관 -> ROW(레코드)

 

객체지향과 관계형데이터베이스 차이점 : 객체지향 (행위)메서드

객체지향 : 데이터, 행위

관계형데이터베이스 : 데이터

 

ORM은 객체지향과 관계형 사이의 변환 기법을 의미


JPA

ORM을 Java 언에어 맞게 사용할 수 있도록 제공되는 스펙

ORM 아래 JPA ~ 

JPA는 단순한 스펙잊기 때문에 구현체(Hibernate 등)마다 프레임워크가 다를 수 있음

 

Spring Data JPA

 

스프링 부트는 JPA 구현체 중 Hibernate를 이용

 

Hibernate 

ORM을 지원하는 오픈소스 프레임워크

단독으로 프로젝트에 적용이 가능한 독립된 프레임워크


스프링 부트 프로젝트 생성 시 추가한 Spring Data JPA은 Hibernate를 쉽게 사용할 수 있도록 추가적인 API를 제공 

 

Spring Data JPA를 이용하여 개발 시, 필요한 코드는 두 종류

1. 엔티티 클래스 

: JPA를 통하여 관리되는 객체(엔티티객체)를 위한 클래스 

2. Repository

: 엔티티 객체들을 처리하는 기능을 보유한 인터페이스 

 

Repository 인터페이스

Spring Data JPA에서 제공하는 인터페이스로 설계

스프링 내부에서 자동으로 객체를 생성하고 실행하는 구조이기 때문에 개발자는 단순히 인터페이스를 하나 정의하기만 하면 된다.

 

Hibernate를 단독으로 사용할 경우 모든 코드를 직접 작성하고 트랜잭션 처리도 직접 처리해야한다.

하지만, Spring Data JPA를 이용할 경우 모든 코드가 자동으로 생성되기 때문에 그럴 필요가 없다.

(CRUD작업, 페이징 작업 개발을 하지 않아도 된다)

 

이렇게 구조가 되어 있음

 

 

Comments