Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Disadvantages of Object Relational Mapping

I am a fan of ORM - Object Relational Mapping and I have been using it with Rails for the past year and a half. Prior that, I use to write raw queries using JDBC and make Database do the heavy lifting via Stored Procedures. With ORM, I was initially happy to do stuff like coach.manager and manager.coaches which were very simple and easy to read.

But as time went by there were in-numerous associations creeping up and I ended up doing a.b.c.d which were firing queries in all directions, behind the scenes. With rails and ruby, the garbage collector went nuts and took insane time to load a very complex page which involves relatively lesser data. I had to replace this ORM style code by a simple Stored procedure and the result I saw was enormous. A page that took 50 seconds to load now takes only 2 seconds.

With this huge difference, should I continue using ORM? It is very clear it has severe overheads compared to a raw query.

In general, what are the general pitfalls of using an ORM framework like Hibernate, ActiveRecord?

like image 611
bragboy Avatar asked Sep 07 '11 12:09

bragboy


1 Answers

An ORM is only a tool. If you don't use it correctly, you'll have bad results.

Nothing stops you from using dedicated HQL/criteria queries, with fetch joins or projections, to return the information that your page must display in as few queries as possible. This will take more or less the same time as dedicated SQL queries.

But of course, if you just get everything by ID and navigate through your objects without realizing how many queries it generates, it will lead to long loading times. The key is to know exactly what the ORM does behind the scene, and decide if it's appropriate or if another strategy must be adopted.

like image 147
JB Nizet Avatar answered Sep 24 '22 05:09

JB Nizet