1. ORM (Object relatinal mapping)
- 객체(클래스) 와 관계(관계형 DB) 와의 설정을 의미
- 객체 지향 프로그래밍은 클래스를 사용하고 관계형 DB 는 테이블을 사용
- 객체 모델과 관계형 모델간에 불일치가 존재하는데 이 객체간의 관계를 바탕으로 SQL 을 자동 생성하여
불일치를 해결함
- Object <= 매핑 => DB 데이터 에서 매핑의 역할을 하는 것
2. 장점
(1) 객체 지향적 코드로 인해 더 직관적이고 비즈니스 로직에 집중할 수 있도록 도와줌
- CRUD 를 위한 긴 SQL 문장을 작성할 필요가 없다
- 각 객체(Model) 별로 코드를 작성해 가독성을 높여 줌
- SQL 의 절차적 접근이 아닌 객체적인 접근으로 생산성을 높임
(2) 재사용 및 유지보수의 편리성 증가
- 매핑 정보가 명확해 ERD 를 보는 것에 대한 의존도를 낮출 수 있다
- ORM 은 독립적으로 작성이 되어 있고 해당 객체들은 재사용 가능
(3) DBMS 에 대한 종속성이 줄어듬
- 대부분의 ORM 은 DB 에 종속적이지 않다
- 개발자는 Object 에 집중함으로 DBMS 를 교체하는 극단적인 작업에도 비교적 적은 리스크와 시간이 소요됨
- 종속적이지 않다는 것은 구현 방법 뿐만 아니라 많은 솔루션에서 자료형 타입까지 유효
* 종속성 : 프로그램 구조가 데이터 구조에 영향을 받는 것을 의미
3. 단점
(1) 완벽한 ORM 만으로는 구현하기 어려움
- 사용하기에는 편하지만 설계에는 매우 신중해야함
- 프로젝트의 복잡성이 높아질 경우 난이도 또한 올라갈 수 있다
- 잘못 구현된 경우 속도 저하 및 심한 경우 일관성이 무너지는 문제점이 생길 수 있다
(2) 프로시저가 많은 시스템에서는 ORM 의 객체 지향적인 장점을 활용하기 어렵다
- 이미 프로시저가 많은 시스템에서는 다시 객체로 바꿔야하며, 그 과정에서 생산성 저하 또는
리스크가 발생할 수 있다
* 프로시저 : 특정 작업을 위한 프로그램의 일부. 함수와 같은 의미
'CS 전공지식' 카테고리의 다른 글
24.02.02 Java 의 Collection Framework 란? (1) | 2024.02.02 |
---|---|
24.02.01 JDK, JRE 란? (0) | 2024.02.01 |
24.01.30 JVM 과 바이트 코드 (1) | 2024.01.30 |
24.01.26 CPU 스케쥴링 알고리즘 (2) | 2024.01.26 |
24.01.25 스레드와 멀티스레딩 그리고 공유자원과 임계영역 (0) | 2024.01.25 |