Object-Relational Mapping(ORM)은 객체 지향 프로그래밍(Obect-Oriented Programming) 언어에서 사용하는 객체와 관계형 데이터베이스(Relational Database)의 데이터 매핑(mapping)하여 상호 변환을 가능하게 하는 기술 또는 도구. 즉, 객체 지향 언어의 객체와 데이터베이스 테이블 간의 데이터를 자동으로 변환해 주는 일종의 다리 역할
현대 소프트웨어 개발에서는 객체 지향 프로그래밍과 관계형 데이터베이스를 함께 사용하는 경우가 많음. 하지만 객체와 데이터베이스는 근본적으로 다른 구조와 개념을 가지고 있기 때문에 이를 직접적으로 연동하는 것은 복잡하고 오류가 발생하기 쉬운 작업. ORM은 이러한 문제를 해결하기 위해 등장. 개발자가 데이터베이스와 상호 작용할 때 객체 지향적인 방식으로 작업할 수 있게 해줌
장점
단점
대표적 ORM 프레임 워크
Java : Hibernate, EclipaseLink
Python : SQLAlchemy, Django ORM
Ruby : ActiveRecord
C# : Entity Framework
PHP : Doctrine, Eloquent
ORM(Object-Relational Mapping)은 객체 지향 프로그래밍 언어에서 사용하는 객체와 관계형 데이터베이스(RDB)의 테이블을 매핑(mapping)하여 데이터 조작을 객체 지향적으로 처리할 수 있게 해주는 기술입니다.
간단히 말해, SQL을 직접 작성하지 않고도 객체를 통해 데이터베이스를 다룰 수 있도록 하는 방법입니다.
JPA를 이용해 간단한 CRUD(Create, Read, Update, Delete) 애플리케이션을 만들어보세요.
주제: 사용자 관리 시스템
User (id, name, email, createdAt)JPA의 엔티티 간 관계 설정을 연습해보세요.
주제: 게시판 애플리케이션
User (id, name, email)Post (id, title, content, createdAt, userId)User와 Post: 일대다 관계 (One User -> Many Posts)Spring Data JPA를 사용하여 페이징과 정렬을 구현해보세요.
주제: 게시판 페이징
Post (id, title, content, createdAt)사용 기술:
Pageable 인터페이스 활용Page 객체를 반환하는 findAll(Pageable pageable) 메서드 사용JPQL을 활용하여 복잡한 쿼리를 작성해보세요.
주제: 사용자와 게시글 통계 조회
Native SQL과 JPA의 JPQL을 비교하며 학습해보세요.
주제: Native Query와 JPQL을 사용하여 동일한 데이터 조회
JPA와 Spring의 트랜잭션 관리 기능을 활용해 트랜잭션을 구현해보세요.
주제: 은행 시스템
Account (id, ownerName, balance)JPA에서 지연 로딩(Lazy Loading)과 즉시 로딩(Eager Loading)의 차이를 학습합니다.
주제: 블로그 시스템
Blog (id, title, content)Comment (id, content, blogId)Blog와 Comment: 일대다 관계JPA의 캐싱 기능을 활용하여 성능 최적화를 학습하세요.
주제: 캐시를 활용한 조회 성능 최적화
spring-boot-starter-data-jpa 사용@PrePersist, @PostLoad 등)@Query를 활용한 사용자 정의 쿼리이 실습을 통해 ORM에 대한 기초부터 고급 활용까지 체계적으로 익히고, 프로젝트에서 ORM을 활용한 데이터베이스 관리에 자신감을 가질 수 있을 것입니다. 🚀