저는 ORM - 객체 관계 매핑의 팬이며 지난 1 년 반 동안 레일즈에서 사용 해왔습니다. 이전에는 JDBC를 사용하여 원시 쿼리를 작성하고 Database가 Stored Procedures를 통해 무거운 작업을 수행하는 데 사용합니다. ORM을 사용하면 처음에는 coach.manager
및 manager.coaches
과 같은 것들을 매우 기쁘게 읽었으며 매우 간단하고 읽기가 쉬웠습니다.객체 관계 매핑의 단점
하지만 시간이지나면서 수많은 연관이 많아지면서 a.b.c.d
은 모든면에서 모든 방향으로 쿼리를 실행하고있었습니다. 레일과 루비로 가비지 컬렉터는 열악한 데이터를 필요로하는 매우 복잡한 페이지를로드하는 미친 시간을 보냈습니다. 이 ORM 스타일 코드를 간단한 Stored 프로 시저로 대체해야했고 결과는 엄청났습니다. 페이지를로드하는 데 50 초가 걸리던 데는 2 초 밖에 걸리지 않습니다.
이 큰 차이점과 함께 ORM을 계속 사용해야합니까? 원시 쿼리와 비교할 때 심각한 오버 헤드가 있다는 것이 확실합니다.
일반적으로 Hibernate, ActiveRecord와 같은 ORM 프레임 워크를 사용하는 일반적인 함의는 무엇입니까?
게으른 가져 오기를 사용하고 있습니까? 기본적으로'ORM'은 당신이 말한만큼 로딩합니다 ... –
@Petar Minichev : ORM이 모든 종류의 fetchings을 수행하고 있기 때문에 그 것에 대한 직접적인 대답은 말할 수 없습니다. 어디에서나 약간의 트레이드 오프가 있습니다. – bragboy