-
ORM(Object-Relational Mapping)database/ORM 2020. 2. 14. 16:24
데이터베이스를 처음 배우고 쿼리문을 익히면서
뭔가 사용할 줄 아는 언어가 하나 늘어나서 뿌듯하기도 한데
한 파일 안에서 이 언어도 쓰고, 저 언어도 쓰고 하니까 복잡하다는 생각이 들었다.
이런 생각한 사람 한 둘이 아니었는지,,
ORM이라는 도구가 있다는 걸 알게 되는데,,,
ORM은 Object-Relational Mapping의 약자로 딱 봐도 뭔가 객체랑 연관이 있어 보인다.
우리는 객체 지향 프로그래밍(OOP)으로
클래스를 만들고 그 틀에 맞는 새로운 인스턴스들을 찍어내는데..
데이터베이스에서 테이블을 만들고 레코드를 추가하는 모습이
마치 클래스와 인스턴스를 닮았다고 생각한 누군가가
그럼 데이터베이스도 객체를 사용해 데이터를 다룰 수 있겠다..!
이런 느낌으로 ORM을 만든 것 같다.
대단하다.. 사실 처음에 뭐,, 대충,, 객체로 데이터베이스를 다루는 거구나
이랬을 때는 별 생각 없었는데 저렇게 생각하니까 새삼 대단한 것 같다 느꼈다.
정리하자면
ORM은
객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것
새로운 것은 아니고 중간에서 변환하는 역할을 한다고 보면 된다.
객체로 작성한 데이터를 쿼리문으로 바꿔서 DB에 날려준다.
왜 사용할까?
우리가 기존에 서버와 클라이언트에서 클래스를 사용해 객체 지향 프로그래밍을 하는데
DB만 테이블이라는 구조를 사용하고, 쿼리문을 이용해 데이터를 다루니
구조의 불일치가 존재하고, 두 개를 동시에 사용하려면 생산성이 떨어질 수 있으니
구조의 불일치를 해결하기 위해 사용한다.
장점은?
코드가 쿼리문에 비해 직관적이고 이해하기 쉽다.
객체를 사용해 재사용 및 유지보수의 편리성이 증가한다.
단점은?
잘못 사용하면 성능 저하가 생긴다.
복잡한 쿼리문은 SQL로 작성하는 게 더 직관적, 효율적일 때가 있다.