오늘은 여기까지

ORM과 JPA 본문

개발/Spring

ORM과 JPA

dev-99 2024. 8. 1. 03:22
ORM (Object Relational Mapping)
객체지향과 관계형을 매핑해주는 기술
  • 객체지향 패러다임과 관계형 데이터베이스 간에는 *패러다임 불일치가 존재한다. ORM은 불일치하는 두 패러다임을 매핑해준다. 
  • 패러다임 불일치?
    • 객체지향과 관계형의 특성이 다르다는 것은 당연한 사실이다. 객체지향의 상속, 추상화, 다형성과 같은 특징은 데이터베이스에 적용할 수 없다. 하지만 둘 사이 유사한 부분도 많다. 클래스와 테이블, 참조와 관계 등등.. 
    • 이런 특징에 기반해 객체지향을 자동으로 관계형 데이터베이스에 맞게 처리해주는 기법이 ORM이다.  
  • 특정 언어에 국한되는 개념이 아니고 다양한 객체지향 언어에서 ORM을 위한 프레임워크들이 존재한다.

 

JPA (Java Persistence API)
ORM을 Java 언어에 맞게 사용하는 표준 기술, 스펙이다. 

 

Hibernate
JPA 스펙을 구현한 프레임워크의 한 종류

ORM과 JPA의 관계

 

정리하자면 ORM이 가장 상위 개념으로, 객체지향과 관계형을 연결해주는 개념이다.

JPA는 ORM 개념을 Java 언어에 맞게 사용하는 스펙이다.

이를 구현한 프레임워크로는 Hibernate, Eclipselink 등이 존재한다.


Spring Data JPA

스프링에서 DB까지

  • Hibernate를 쉽게 사용할 수 있는 라이브러리인 Spring Data JPA를 스프링 프레임워크에서 제공한다.
  • Spring Data JPA를 사용하면 개발자는 단지 두 종류의 코드만 작성해도 된다.
    • JPA를 통해서 관리하는 객체 (=엔티티 객체)를 위한 엔티티 클래스
    • 엔티티 객체를 처리하는 Repository

엔티티 클래스

@Entity
@Table(name = "student")
@ToString
public class Student {
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long sno;
    
	@Column(length = 50, nullable = false)
	private String sname;
}

데이터베이스의 테이블과 같은 구조로 작성한다.

 

Repository

import org.springframework.data.jpq.repository.JpaRepository;
import org.a.b.entity.Student;

public interface StudentRepository extends JpaRepository<Student, Long> {
}

 

 

참고한 자료: 코드로 배우는 스프링 부트 웹 프로젝트 (구멍가게 코딩단 저) 

'개발 > Spring' 카테고리의 다른 글

[Spring] Spring MVC 프레임워크  (1) 2024.12.17
[Spring] Bean Scope / 싱글톤, 프로토타입 등  (1) 2024.12.15