본문 바로가기

백엔드

ORM(object relational mapping)

반응형

데이터를 저장하거나 수정하는 등 데이터를 처리할 때에는 데이터베이스를 사용한다.

이때, SQL 쿼리라는 구조화된 질의를 작성하고 실행하는 등 복잡한 과정이 필요한데

ORM(object relational mapping)을 이용하면 파이썬 문법만으로도 데이터베이스를 다룰 수 있다.

 

SQL 쿼리와 ORM 비교

id subject content
1 안녕하세요 가입 인사드립니다!
2 질문 있습니다 ORM이 궁금합니다.

이때, 구성된 question 테이블에 새로운 데이터를 삽입하는 쿼리는 보통 다음처럼 작성한다.

insert into question (subject, content) values ('안녕하세요', '가입 인사드립니다!');
insert into question (subject, content) values ('질문 있습니다', 'ORM이 궁금합니다.');

하지만 ORM을 사용하면 쿼리 대신 파이썬 코드로 다음처럼 작성할 수 있다.

question1 = Question(subject=’안녕하세요’, content='가입 인사드립니다!')
db.session.add(question1)
question2 = Question(subject=’질문 있습니다’, content='ORM이 궁금합니다.')
db.session.add(question2)

코드에서 Question은 파이썬 클래스이며, 이처럼 데이터를 관리하는 데 사용하는 ORM 클래스를 모델이라고 한다. 모델을 사용하면 내부에서 SQL 쿼리를 자동으로 생성해 주므로 직접 작성하지 않아도 된다. 즉, 파이썬만 알아도 데이터베이스에 질의할 수 있다.

 

ORM의 장점

  • ORM을 이용하면 데이터베이스 종류에 상관 없이 일관된 코드를 유지할 수 있어서 프로그램을 유지·보수하기가 편리하다.
  • 또한 내부에서 안전한 SQL 쿼리를 자동으로 생성해 주므로 개발자가 달라도 통일된 쿼리를 작성할 수 있고 오류 발생률도 줄일 수 있다.
  • ORM을 이용한 새 데이터 삽입 예는 코드 자체만 놓고 보면 양이 많아 보이지만 별도의 SQL 문법을 배우지 않아도 된다는 장점이 있어 훨씬 좋다.
반응형