Object-Relational Mapping(객체 관계형 매핑, ORM)의 개념을 정리한 포스트입니다. 💧
ORM은 메타데이터 설명자를 사용하여 객체 코드(object code)를 관계형 데이터베이스에 연결하는 프로그래밍 기술을 말합니다. 여기서 객체 코드란 Java, C#과 같은 객체 지향 프로그래밍(OOP) 언어를 말합니다. ORM을 이용해 관계형 DB와 객체 OOP 언어에 공존할 수 없는 데이터 타입 시스템을 변환해줍니다.
객체 코드와 관계형 DB의 미스매치(mismatch)를 세 가지 접근 방법으로 해결할 수 있습니다.
위의 data access technique(데이터 접근 기법) 이외에도, ORM이 가진 장점은 많습니다!
<?php
$users = User::all();
foreach($users as $user) {
echo "User: " . $user->name . "<br>";
foreach($user->roles as $role) {
// this will make a call to the database for every user.
echo "\tRole: " . $role->name . "<br>";
}
}
/***********************************************************************/
# 아래와 같이 해결할 수 있다!
$users = User::with('roles')->all();
foreach($users as $user) {
echo "User: " . $user->name . "<br>";
foreach($user->roles as $role) {
// this already has the role information for each user so will not call the database again.
echo "\tRole: " . $role->name . "<br>";
}
}
ORM은 개발 시간을 단축하고 코드를 간결하게 만들어주는 좋은 테크닉입니다. CRUD 기능을 갖추어야 하는 프로젝트에 적합한 기술이고, SQL 지식이 충분하지 않더라도 SQL database와 상호작용하는 프로젝트를 개발할 수 있습니다! SQL보다 데이터를 좀 더 읽기 쉬운 형태로 제공해준다는 장점도 있죠.
다만, 개발자들은 복잡한 쿼리를 효율적으로 처리하기 위해서는 반드시 데이터에 대한 사전 지식과 어느정도의 SQL 지식을 갖추어야 합니다. 🍊