ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ORM(Object-Relational Mapping)
    database/ORM 2020. 2. 14. 16:24

    데이터베이스를 처음 배우고 쿼리문을 익히면서

    뭔가 사용할 줄 아는 언어가 하나 늘어나서 뿌듯하기도 한데

    한 파일 안에서 이 언어도 쓰고, 저 언어도 쓰고 하니까 복잡하다는 생각이 들었다.

    이런 생각한 사람 한 둘이 아니었는지,,

    ORM이라는 도구가 있다는 걸 알게 되는데,,,

    ORM은 Object-Relational Mapping의 약자로 딱 봐도 뭔가 객체랑 연관이 있어 보인다.

     

    우리는 객체 지향 프로그래밍(OOP)으로

    클래스를 만들고 그 틀에 맞는 새로운 인스턴스들을 찍어내는데..

    데이터베이스에서 테이블을 만들고 레코드를 추가하는 모습이

    마치 클래스와 인스턴스를 닮았다고 생각한 누군가가

     그럼 데이터베이스도 객체를 사용해 데이터를 다룰 수 있겠다..!

    이런 느낌으로 ORM을 만든 것 같다.

     

    대단하다..

    사실 처음에 뭐,, 대충,, 객체로 데이터베이스를 다루는 거구나

    이랬을 때는 별 생각 없었는데 저렇게 생각하니까 새삼 대단한 것 같다 느꼈다.

     

    정리하자면

     

    ORM은

    객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것

    새로운 것은 아니고 중간에서 변환하는 역할을 한다고 보면 된다.

    객체로 작성한 데이터를 쿼리문으로 바꿔서 DB에 날려준다.

     

    왜 사용할까?

    우리가 기존에 서버와 클라이언트에서 클래스를 사용해 객체 지향 프로그래밍을 하는데

    DB만 테이블이라는 구조를 사용하고, 쿼리문을 이용해 데이터를 다루니

    구조의 불일치가 존재하고, 두 개를 동시에 사용하려면 생산성이 떨어질 수 있으니

    구조의 불일치를 해결하기 위해 사용한다.

     

    장점은?

    코드가 쿼리문에 비해 직관적이고 이해하기 쉽다.

    객체를 사용해 재사용 및 유지보수의 편리성이 증가한다.

     

    단점은?

    잘못 사용하면 성능 저하가 생긴다.

    복잡한 쿼리문은 SQL로 작성하는 게 더 직관적, 효율적일 때가 있다.

     

     

Designed by Tistory.