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

정리하자면 ORM이 가장 상위 개념으로, 객체지향과 관계형을 연결해주는 개념이다.
JPA는 ORM 개념을 Java 언어에 맞게 사용하는 스펙이다.
이를 구현한 프레임워크로는 Hibernate, Eclipselink 등이 존재한다.
Spring Data JPA

- 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 |