티스토리 뷰
객체지향 프로그래밍은 추상화, 캡슐화, 정보은닉, 상속, 다형성 등 시스템의 복잡성을 제어할 수 있는 다양한 장치들을 제공하고 있습니다. 그래서 다양한 복잡한 애플리케이션에서는 대부분 객체지향 언어로 개발을 하고 있습니다.
이러한 객체지향 프로그래밍 언어는 객체 간의 관계를 중심으로 데이터를 모델링하고 프로그래밍을 합니다.
데이터를 영구적으로 저장하기 위해서 관계형 데이터베이스를 활용을 하는데, 관계형 데이터베이스는 테이블과 열로 구성된 데이터 집합을 사용을 하여 데이터를 저장하고 관리합니다.
패러다임의 불일치?
이처럼 객체지향 프로그래밍 언어와 관계형 데이터베이스 간의 불일치를 패러다임의 불일치라 하고 다음과 같은 문제들을 초래할 수 있습니다.
1. 객체와 테이블 간의 매핑: 객체는 상속, 다형성 등의 특징을 가지고 있지만, 테이블은 이러한 개념을 직접적으로 지원하지 않습니다. 따라서 객체 모델과 관계형 데이터베이스 모델 간의 매핑이 필요합니다.
2. 데이터 타입의 불일치: 객체 지향 언어는 복잡한 데이터 타입을 지원하지만, 관계형 데이터베이스는 기본적인 데이터 타입만을 제공합니다. 이로 인해 객체의 복잡한 구조를 테이블로 표현하기 어려울 수 있습니다.
3. 지연 로딩 및 성능 문제: 객체 그래프의 일부만을 로드하는 지연 로딩은 객체 지향 언어에서 일반적인 패턴이지만, 이는 관계형 데이터베이스에서는 성능 문제를 초래할 수 있습니다.
JPA는 이러한 객체 지향 프로그래밍 언어와 관계형 데이터베이스 간의 불일치를 해결하기 위해 개발이 되었습니다.
JPA를 사용하면 객체 모델과 데이터베이스 스키마 간의 매핑을 간소화하고, 객체 지향 프로그래밍 언어의 특징을 그래도 유지하면서 관계형 데이터베이스를 다룰 수 있습니다.
이제부터 JPA에 대해 본격적으로 다뤄보도록 하겠습니다.
본 포스팅은 자바 ORM 표준 JPA 프로그래밍을 참고하여 작성했습니다.
'JPA' 카테고리의 다른 글
기본 키 매핑(@Id, @GeneratedValue) (1) | 2024.04.23 |
---|---|
JPA 데이터베이스 스키마 자동 생성 (0) | 2024.04.22 |
JPA 매핑 어노테이션(@Entity, @Table) (0) | 2024.04.21 |
SQL 직접 다루는 문제점 (0) | 2024.04.12 |
JPA란? (0) | 2024.04.11 |
- 메일
- @GeneratedValue
- @joincolumn
- @Entity
- 비동기
- 즉시 로딩
- mappedBy
- 영속성 컨텍스트
- @Id
- onetoone
- 준영속
- 연관관계
- 엔티티 매니저
- N + 1
- @TransactionalEventListener
- @Cacheable
- 단일 테이블 전략
- 최적화
- 변경감지
- 조인 전략
- @MappedSuperclass
- @ManyToOne
- 1차 캐시
- JPA
- 스키마 자동 생성
- @Table
- Redis
- @OneToMany
- 비영속
- 인메모리 db