[Other] ORM

Byron·2021년 9월 9일
0

Other

목록 보기
13/13
post-thumbnail

ORM?

Object–relational mapping
객체 관계 매핑으로, 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다.

이미지 출처: https://javabydeveloper.com/orm-object-relational-mapping/#impedance-mismatch

객체 지향 프로그래밍은 클래스를 사용하고 관계형 데이터 베이스는 테이블을 사용한다.
여기서 객체 모델과 관계형 모델간에 불일치가 발생하게 되는데, ORM은 이러한 불일치를 객체간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.

장점

객체지향적인 코드로 인해 더 직관적이고, 로직에 집중할 수 있도록 도와준다.
각 객체(Model) 별로 코드를 작성하므로 가독성이 높아진다.
재사용 및 유지 보수의 편리성이 증가한다.
DBMS에 대한 *종속성이 줄어든다(대부분의 ORM은 DB에 비종속적).
반복적인 SQL 코드가 필요하지 않아서 신속한 개발이 가능하므로 개발 비용을 절감한다.
업체별 SQL 차이점을 극복한다(ORM은 업체별 SQL을 작성하는 방법을 알고 있음).

*종속성은 프로그램 구조가 데이터 구조에 영향을 받는 것을 의미한다.

단점

모든것을 ORM으로만 구현하기 어렵고, DBMS 고유의 기능을 전부 사용하지는 못한다.
프로젝트의 복잡성이 크면 복잡한 쿼리를 작성해야 하고, 구현하는 난이도가 급격히 상승한다.
잘못 구현한 경우 성능이 저하된다.
*프로시저가 많은 곳은 ORM의 객체 지향적인 장점을 활용하기 어려움

*프로시저는 루틴이나, 서브루틴 및 함수와 같은 뜻이다. 하나의 프로시저는 특정 작업을 수행하기 위한 프로그램의 일부이다. 이를 모두 객체로 다시 바꿔야 하기 때문.

References

https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EA%B4%80%EA%B3%84_%EB%A7%A4%ED%95%91
https://javabydeveloper.com/orm-object-relational-mapping/#impedance-mismatch
https://geonlee.tistory.com/207
https://azderica.github.io/00-db-orm/
https://lalwr.blogspot.com/2019/09/orm.html
https://developer-stories.tistory.com/10
https://velog.io/@alskt0419/ORM%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C...-iek4f0o3fg

profile
step by step

0개의 댓글