The benefit of an ORM (apart from database independence) is that it lets you use the database as an object, something more natural to the particular programming language than raw SQL queries.<p>While on smaller scale projects ORMs might seem like an overkill, once you're dealing with a more complex setup (not neccessarily complex on the database level, but on the application level), you will want something that makes the database easily accessible in a consistent way.<p>Consistency is another key point. If you write raw SQL, there will be different queries that do similar things all over the place, unless you collect them into a wrapper class of some sort. At which point, you laid the foundations of your DIY ORM.<p>It is less efficient than hand-optimised SQL in most cases, but on the up side, ORMs often make the application development easier and faster, which, in my opinion, is a good trade off.<p>To name an example... Lets say I have a table of Authors, and another with Books, and I want to retrieve a list of books by a particular author, and display that in a template.<p>Without an ORM, I'd write the SQL, stuff the results into some variable the template can then process, and display it. With an ORM, I the query and stuffing into a variable part is done by the ORM. I get back a result object with clearly defined properties, which is easy to display.<p>In SQL, I'd do a 'SELECT * FROM Books WHERE author_id = (SELECT id FROM Authors WHERE name = "Famous Guy")', and stuff the results into a simple table, on which the template can iterate over.<p>In - say - Django ORM, that'd be:<p>books_by_author = Book.objects.filter (author__name = 'Famous Guy')<p>Simpler, isn't it?<p>And once you want to add pagination, displaying 10 results per page, you will have to tweak your SQL to add LIMIT support. With - again, with Django - a good ORM, which does lazy evaluation, you can just do:<p>books = Books.objects.filter (author__name = 'Famous Guy')[0:10]<p>Or something similar, and it will Do The Right Thing.<p>This is why I love ORMs, they already implemented all the neat tricks I want.