🔷 ORM이란?
- 우리가 일반 적으로 알고 있는 애플리케이션 Class와 RDB(Relational DataBase)의 테이블을 매핑(연결)한다는 뜻이며, 기술적으로는 어플리케이션의 객체를 RDB 테이블에 자동으로 영속화 해주는 것이라고 보면된다.
- 애플리케이션의 객체 모델과 DB의 관계형 모델 사이의 불일치를 해결
- SQL 쿼리를 직접 작성하는 대신 객체 지향적인 방식으로 데이터를 처리 가능
※ 객체와 테이블 매핑: 클래스와 DB 테이블을 연결.
예) Java나 Python의 클래스는 RDB의 테이블과 연결, 클래스의 속성은 테이블의 컬럼과 대응
※ 자동 영속화: 객체를 DB에 저장, DB에서 객체를 조회하는 작업을 자동화
예) 객체를 생성하고 저장하면 ORM이 이를 DB에 저장, 반대로 DB에서 조회된 데이터를 객체 형태로 변환해 제공
※ SQL 추상화: SQL을 직접 작성하지 않아도 됨. 👉🏻 ORM이 SQL 쿼리를 자동으로 생성. DB와의 상호작용을 처리.
👉🏻 코드가 더 간결하고 유지보수가 쉬워짐.
🔷 대표적인 ORM 프레임워크?
- Hibernate (Java)
- Entity Framework (.NET)
- Django ORM (Python)
🔷 ORM의 장점
- SQL 작성의 필요성 감소: SQL 쿼리를 직접 작성할 필요가 없어서 코드가 간결해지고 개발이 쉬워짐.
- 생산성 향상: 데이터베이스 작업을 객체 지향적으로 처리할 수 있어 생산성이 향상됨.
- 데이터베이스 독립성: 특정 DB에 종속되지 않으며, 다른 DB로의 이식성이 높음.
예) MySQL을 사용하다가, 오라클로 넘어갈 경우 두 DB의 문법에 차이가 있어서, 기존에 작성한 쿼리를 전부 수정해야 하는 경우가 생길 수 있는데, ORM을 사용하면 그러지 않아도 됨.
🔷 ORM의 단점
- 성능 문제: 때로 성능에 영향을 미칠 수 있으며, 복잡한 쿼리를 직접 작성하는 것보다 비효율적인 경우도 있음.
- 학습 난이도: ORM을 제대로 활용하려면 학습 필요.