ORM이란?
ORM(Object-Relational Mapping)은 객체 지향 프로그래밍 언어와 관계형 데이터베이스 간의 데이터를 매핑하고 변환하는 기술입니다. 간단히 말해, 객체와 데이터베이스 테이블 간의 변환을 자동화하여 개발자가 SQL을 직접 작성하지 않고도 데이터베이스와 상호작용할 수 있게 도와줍니다.
패러다임의 차이
- 객체 지향 프로그래밍 (OOP) : 클래스와 객체를 기반으로 데이터를 구조화, 관리
- 관계형 데이터베이스 (RDB) : 테이블, 행, 열을 기반으로 데이터를 저장, 관리
두 패러다임의 차이를 적절히 매핑해 주는것이 ORM의 역할이다.
필요성
- 생산성 향상
- 번거로운 하드 SQL 쿼리 작성을 줄여 개발 속도, 가독성, 유지보수성 증가
- 객체 지향 설계와의 통합
- 객체 지향적인 설계와 데이터베이스 설계를 자연스럽게 통합하여, 도메인 모델과 데이터베이스 모델 간의 일관성 유지
- 데이터베이스 독립성
- ORM 프레임워크는 다양한 데이터베이스와 호환되므로, 특정한 데이터 베이스에 얽매이지 않고 쉽게 갈아끼울 수 있다. (데이터베이스 선택, 변경의 자유로움)
대표적인 ORM 프레임워크
- Hibernate
- JPA
- MyBatis
동작 방식
- 매핑 설정
- 클래스와 테이블, 필드와 열 간의 매핑을 설정 파일이나 애노테이션으로 정의
- 객체 생성
- 데이터베이스에서 조회한 결과를 객체로 변환
- 데이터 조작
- 객체를 통해 데이터베이스의 데이터를 생성, 수정, 삭제
- 쿼리 생성
- ORM 내부적으로 SQL을 생성하고 실행하여 데이터베이스와 상호작용
ORM사용 시 고려사항
- 성능 최적화 : N+1 문제, 불필요한 쿼리 생성 등을 주의해야 한다.
- 복잡한 쿼리 처리 : 모든 쿼리를 효율적으로 처리하지 못할 수 있으므로 필요한 경우 네이티브 SQL 사용
- 트랜잭션 관리 : 데이터의 일관성과 무결성을 유지하기 위해 적절한 트랜잭션 관리가 필요
- 학습 곡선 : 충분히 학습한 이후에 사용해야 사이드 이펙트를 줄일 수 있다.