반응형
SMALL
ORM은 객체-관계 매핑이라는 뜻으로, 객체 지향 프로그래밍 언어에서 사용하는 객체와 데이터베이스의 테이블 간의 데이터를 자동으로 변환해 주는 기술이다. 간단히 말해 , 자바나 파이썬 같은 객체 지향 언어에서 사용하는 객체들을 데이터베이스의 테이블과 매핑하여. 객체와 데이터베이스 간의 데이터를 쉽게 저장하고 불러올 수 있게 해주는 도구 입니다.
ORM의 필요성
객체 지향 언어와 관계형 데이터베이스는 서로 다른 개념을 가지고 있습니다:
- 객체 지향 언어에서는 데이터를 객체로 관리합니다.
- 관계형 데이터베이스에서는 데이터를 테이블로 관리합니다.
이 두 개념을 직접 연결하려면, 개발자가 객체를 테이블 형태로 변환하거나 SQL을 작성해야 합니다. 이를 매번 수동으로 처리하는 것은 번거로울 뿐만 아니라, 유지보수가 어렵고 코드의 복잡성이 높아지기 쉽습니다.
ORM은 이러한 객체와 관계형 데이터베이스 간의 불일치를 자동으로 처리하여, 개발자가 객체에 데이터를 저장하고 불러오는 방식으로만 코드를 작성해도 자동으로 SQL이 생성되고 데이터베이스에 반영되도록 해줍니다.
ORM의 장점
- 생산성 향상:
- ORM을 사용하면, 데이터를 저장하고 조회하기 위해 SQL을 일일이 작성할 필요가 없습니다. 대신 객체 지향적인 코드로 데이터베이스 작업을 수행할 수 있어 개발이 쉬워집니다.
- 유지보수성:
- 객체 지향적인 코드는 데이터베이스의 구조 변화에 대해 유연하게 대응할 수 있습니다. ORM을 사용하면 데이터베이스가 변경되더라도 코드를 쉽게 수정할 수 있습니다.
- 데이터베이스 독립성:
- ORM은 대부분의 관계형 데이터베이스에 대한 호환성을 제공하므로, 특정 데이터베이스에 의존하지 않고 다양한 데이터베이스를 지원합니다. 예를 들어, MySQL에서 PostgreSQL로 변경해도 ORM 설정만 변경하면 코드 수정 없이 사용할 수 있습니다.
ORM과 JPA의 차이
- ORM (Object-Relational Mapping)
- ORM은 객체-관계 매핑이라는 개념을 나타내며, 객체 지향 언어의 객체를 데이터베이스의 테이블과 자동으로 매핑하는 기술을 의미합니다.
- ORM을 사용하면 객체를 직접 데이터베이스에 저장하거나 조회할 수 있고, 이러한 작업을 위해 SQL을 작성할 필요 없이 객체 지향 코드로 데이터베이스 작업을 수행할 수 있습니다.
- 예시: Hibernate, EclipseLink, MyBatis 등의 ORM 프레임워크가 있습니다.
- JPA (Java Persistence API)
- JPA는 자바에서 ORM을 표준화한 인터페이스로, ORM을 쉽게 구현하고 사용할 수 있도록 자바 진영에서 정의한 ORM 표준 스펙입니다.
- JPA는 자체적으로는 기능을 수행하지 않으며, 구현체(ORM 프레임워크)를 통해 동작합니다. 따라서 JPA를 사용한다고 하면, 보통 JPA 인터페이스를 사용하여 코드 작성이 가능하면서도, JPA의 구현체인 Hibernate 같은 ORM 프레임워크를 함께 사용하는 것을 의미합니다.
- 주요 특징: JPA는 ORM의 기본 원칙을 따르면서도, JPQL(Java Persistence Query Language)과 같은 기능을 제공하여 객체 지향 쿼리를 지원합니다.
정리
- ORM: 객체와 관계형 데이터베이스를 매핑하여 데이터베이스와의 상호작용을 쉽게 하는 기술과 개념입니다.
- JPA: 자바에서 ORM을 표준화한 API 인터페이스로, 자바 개발자가 ORM을 일관되게 사용할 수 있도록 정의된 표준 스펙입니다.
즉, JPA는 ORM을 위한 표준 인터페이스이고, Hibernate와 같은 ORM 프레임워크가 JPA의 구현체입니다. JPA를 사용하면 다양한 ORM 프레임워크와 쉽게 호환할 수 있어, JPA를 이용해 코드를 작성하고 이를 Hibernate 같은 ORM 구현체가 처리하는 방식으로 주로 사용됩니다.
2024.10.30 - [cs정리] - ORM 프레임워크 - HIBERNATE, MYBATIS
2024.10.30 - [cs정리] - SPRING BOOT JPA란?
반응형
LIST
'cs정리' 카테고리의 다른 글
스프링 빈 주입시 생기는 문제들 (0) | 2024.11.09 |
---|---|
SPRING BEAN이란 (0) | 2024.11.09 |
ORM 구현체- HIBERNATE, MYBATIS (2) | 2024.10.30 |
SPRING BOOT JPA란? (0) | 2024.10.30 |
자바 추상클래스와 인터페이스 차이 (0) | 2024.10.29 |