-

ORM 이란, 객체형 데이터 (JAVA의 Object)와 관계형 데이터 (관계형 데이터베이스의 테이블) 사이에서 개념적으로 일치 하지 않는 부분을 해결하기 위하여 이 둘 사이의 데이터를 매핑(Mapping) 하는 것


객체형 데이터와 관계형 데이터의 각 속성들을 매핑할 경우 관계형 데이터를 객체형 데이터 처럼 사용하는 것이 가능하다. 


JDBC코드의 작성 없이 간단한 매핑 설정으로 데이터베이스의 테이블 데이터를 JAVA객체로 전달 받을수 있는 것


ORM을 이용하면 개발을 좀 더 편하게 할 수 있고, Service layer에 집중 할 수 있다.


흔히 사용하는 대표적인 예로 는 Hibernate , mybatis , Spring JPA 가 있다.


예)

 setter 메소드가 있다면 객체에 결과를 set하는 작업들이 따로 필요한 것이 아니라 자동으로 setting 되는 것이다물론 여기에 추가적으로 1:m 이나 m:1 등의 관계들이 형성되면 추가적인 작업이 필요하긴 하지만 어쨌든 일단 눈에 보이는 간단한 부분은 처리가 되는 것을 볼 수 있다물론 반대의 경우에도 객체를 던져주면ORM Framework에서 알아서 get을 해와서 해당하는 column에 넣어주게 된다.

 

어떻게 보면 더 복잡해 보일 수 도 있는 ORM이지만 막상 사용해보면 그 편리함에 몸을 떨게 된다단순하게 get/set만 해주는게 목적이 아니라 객체지향적인 시스템을 위해서 관계형데이터베이스의 설계부터 변화를 주고설계된 데이터베이스와 객체와의 관계에 대한 설정 등을 포함하여 보다 객체지향적인 시스템의 완성을 위한 도구라고 말할 수 있겠다물론 ORM이라는 것이 흔히 말하는 silver bullet은 절.아니다이 녀석이 쓰여서 이득을 볼 수 있는 부분이 존재할 것이며쓰지 않아서 이득을 볼 부분이 존재 할 것이다많은 사람들이 ORM에 대하여 우려하고 있는 부분은 객체지향적으로 설계되지 않은 데이터베이스에서의 사용에 따른 폐혜라고 생각한다이미 데이터베이스 중심적인 사고를 통하여 만들어 놓은 데이터베이스에 ORM을 도입을 해서도 분명 이점이 있긴하겠지만그에 비해서 개발자들의 학습곡선 이라던지기존에 존재하는 코드나 시스템들과의 연계 또는 유지보수적인 측면그리고 성능 등에서 생각해보면 부정적으로 볼 수 밖에 없다전체적인 시스템의 분석,설계 단계에서부터 객체와 데이터베이스를 따로 생각하는 것이 아니라 하나의 덩어리로 인지하고 양쪽 모두를 고려한 설계를 해나갈 수 있을 때, ORM은 보다 좋은 모습을 보여주고 각광을 받을 수 있을 것이다

다른 카테고리의 글 목록

취업Q&A/데이터베이스 기술면접 카테고리의 포스트를 톺아봅니다