<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: ORM Is NOT Inherently Evil</title>
	<atom:link href="http://elegantcode.com/2008/11/24/orm-is-not-inherently-evil/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com/2008/11/24/orm-is-not-inherently-evil/</link>
	<description></description>
	<lastBuildDate>Wed, 17 Mar 2010 08:54:42 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Davy Brion</title>
		<link>http://elegantcode.com/2008/11/24/orm-is-not-inherently-evil/comment-page-3/#comment-39756</link>
		<dc:creator>Davy Brion</dc:creator>
		<pubDate>Mon, 15 Dec 2008 21:06:42 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/?p=1560#comment-39756</guid>
		<description>Btw, the reason i&#039;m asking is because you seem to be throwing your MVC credentials around to prove your point, whereas i&#039;m just wondering what on earth that has to with the ORM discussion :)</description>
		<content:encoded><![CDATA[<p>Btw, the reason i&#8217;m asking is because you seem to be throwing your MVC credentials around to prove your point, whereas i&#8217;m just wondering what on earth that has to with the ORM discussion <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Davy Brion</title>
		<link>http://elegantcode.com/2008/11/24/orm-is-not-inherently-evil/comment-page-3/#comment-39755</link>
		<dc:creator>Davy Brion</dc:creator>
		<pubDate>Mon, 15 Dec 2008 21:05:46 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/?p=1560#comment-39755</guid>
		<description>regardless of the whole ORM vs SQL layer debate which we obviously can&#039;t agree on, could you please point out what exactly an MVC architecture has to do with an ORM?  They are in no way related, other than the fact that many people use them together... there is nothing in MVC which implies usage of an ORM.</description>
		<content:encoded><![CDATA[<p>regardless of the whole ORM vs SQL layer debate which we obviously can&#8217;t agree on, could you please point out what exactly an MVC architecture has to do with an ORM?  They are in no way related, other than the fact that many people use them together&#8230; there is nothing in MVC which implies usage of an ORM.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Xeno</title>
		<link>http://elegantcode.com/2008/11/24/orm-is-not-inherently-evil/comment-page-3/#comment-39754</link>
		<dc:creator>Xeno</dc:creator>
		<pubDate>Mon, 15 Dec 2008 21:03:53 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/?p=1560#comment-39754</guid>
		<description>I understand your skepticism, after all you are a true believer and probably haven&#039;t had to scale a 10 terabyte database yet for over 1 million daily customers. I don&#039;t expect you to believe I have read and tried this with my team after all you believe whole heartedly that this stuff works.

But having tested this and benchmarked it with hibernate, I can tell you it is indeed slower.

You can blame it on developers all you want. You can sit here and say everyone else is wrong. You can tell me as the maintainer of an MVC framework that I am wrong as well. But it won&#039;t stop people from saying it. And at some point, you may just do your own benchmarks against a sql layer... and you may find the same exact thing.

I guess trying to talk anymore on this would be like Jesus trying to convince the Pope that he&#039;s an athiest.</description>
		<content:encoded><![CDATA[<p>I understand your skepticism, after all you are a true believer and probably haven&#8217;t had to scale a 10 terabyte database yet for over 1 million daily customers. I don&#8217;t expect you to believe I have read and tried this with my team after all you believe whole heartedly that this stuff works.</p>
<p>But having tested this and benchmarked it with hibernate, I can tell you it is indeed slower.</p>
<p>You can blame it on developers all you want. You can sit here and say everyone else is wrong. You can tell me as the maintainer of an MVC framework that I am wrong as well. But it won&#8217;t stop people from saying it. And at some point, you may just do your own benchmarks against a sql layer&#8230; and you may find the same exact thing.</p>
<p>I guess trying to talk anymore on this would be like Jesus trying to convince the Pope that he&#8217;s an athiest.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Xeno</title>
		<link>http://elegantcode.com/2008/11/24/orm-is-not-inherently-evil/comment-page-3/#comment-39753</link>
		<dc:creator>Xeno</dc:creator>
		<pubDate>Mon, 15 Dec 2008 20:56:58 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/?p=1560#comment-39753</guid>
		<description>Seriously, it&#039;s an MVC framework. We don&#039;t take these moves slightly. It&#039;s a complete rethinking of the framework and ORM maes it EASY for people to handle databases. That&#039;s a big plus.

However, there is always an engineering tradeoff; you cant make something easier to use without adding bloat. Ruby found that out when people kept saying that it doesn&#039;t scale and CTO&#039;s started dumping it. ORM is also problematic in the same way.

Does this mean it is not useful? No. For small and medium projects that do not expect large amounts of growth and don&#039;t have a DBA or other development resources, this may be ideal. But for those who do have a DBA who can tweak the queries for speed and scalability and if you do plan your website for growth, you should be ditching ORM and be building an SQL layer as you will be hand coding everything anyway.

Friends of mine who work for AT&amp;T who went with ORM for one of their apps ended up hand coding ALL their queries and I asked &#039;so what is the point of ORM then&#039; and they said &#039;basically none&#039;. They could have done this with a sql layer just as easily and actually saved ALOT of time.</description>
		<content:encoded><![CDATA[<p>Seriously, it&#8217;s an MVC framework. We don&#8217;t take these moves slightly. It&#8217;s a complete rethinking of the framework and ORM maes it EASY for people to handle databases. That&#8217;s a big plus.</p>
<p>However, there is always an engineering tradeoff; you cant make something easier to use without adding bloat. Ruby found that out when people kept saying that it doesn&#8217;t scale and CTO&#8217;s started dumping it. ORM is also problematic in the same way.</p>
<p>Does this mean it is not useful? No. For small and medium projects that do not expect large amounts of growth and don&#8217;t have a DBA or other development resources, this may be ideal. But for those who do have a DBA who can tweak the queries for speed and scalability and if you do plan your website for growth, you should be ditching ORM and be building an SQL layer as you will be hand coding everything anyway.</p>
<p>Friends of mine who work for AT&amp;T who went with ORM for one of their apps ended up hand coding ALL their queries and I asked &#8217;so what is the point of ORM then&#8217; and they said &#8216;basically none&#8217;. They could have done this with a sql layer just as easily and actually saved ALOT of time.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Davy Brion</title>
		<link>http://elegantcode.com/2008/11/24/orm-is-not-inherently-evil/comment-page-2/#comment-39752</link>
		<dc:creator>Davy Brion</dc:creator>
		<pubDate>Mon, 15 Dec 2008 20:55:56 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/?p=1560#comment-39752</guid>
		<description>sorry to tell you this, but then you really didn&#039;t read the documentation on what kind of options were available

Could you at least go over the links i posted instead of simply stating &quot;it used more bandwith?&quot;

you already mentioned that you weren&#039;t involved with all the tests, so you can&#039;t possibly claim that it is by definition slower if you&#039;re not even sure how the tests were implemented.  Furthermore, your other statements regarding what is or isn&#039;t possible with an ORM are incorrect as well.  How much longer would you like to keep this up?  You could probably invest this time more wisely in other matters... such as making sure you know what you&#039;re talking about.</description>
		<content:encoded><![CDATA[<p>sorry to tell you this, but then you really didn&#8217;t read the documentation on what kind of options were available</p>
<p>Could you at least go over the links i posted instead of simply stating &#8220;it used more bandwith?&#8221;</p>
<p>you already mentioned that you weren&#8217;t involved with all the tests, so you can&#8217;t possibly claim that it is by definition slower if you&#8217;re not even sure how the tests were implemented.  Furthermore, your other statements regarding what is or isn&#8217;t possible with an ORM are incorrect as well.  How much longer would you like to keep this up?  You could probably invest this time more wisely in other matters&#8230; such as making sure you know what you&#8217;re talking about.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Xeno</title>
		<link>http://elegantcode.com/2008/11/24/orm-is-not-inherently-evil/comment-page-2/#comment-39751</link>
		<dc:creator>Xeno</dc:creator>
		<pubDate>Mon, 15 Dec 2008 20:51:31 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/?p=1560#comment-39751</guid>
		<description>Tested with hibernate. Thats what we were using. 

Thats why I stated the above.</description>
		<content:encoded><![CDATA[<p>Tested with hibernate. Thats what we were using. </p>
<p>Thats why I stated the above.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Davy Brion</title>
		<link>http://elegantcode.com/2008/11/24/orm-is-not-inherently-evil/comment-page-2/#comment-39750</link>
		<dc:creator>Davy Brion</dc:creator>
		<pubDate>Mon, 15 Dec 2008 20:51:10 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/?p=1560#comment-39750</guid>
		<description>seriously, take a look at the documentation... there are plenty of ways of fetching only the data that you need.  

You can also use joins when you _need_ to, or you can avoid them when you _don&#039;t need_ them

Please don&#039;t make statements that are incorrect, it really doesn&#039;t help your arguments at all</description>
		<content:encoded><![CDATA[<p>seriously, take a look at the documentation&#8230; there are plenty of ways of fetching only the data that you need.  </p>
<p>You can also use joins when you _need_ to, or you can avoid them when you _don&#8217;t need_ them</p>
<p>Please don&#8217;t make statements that are incorrect, it really doesn&#8217;t help your arguments at all</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Davy Brion</title>
		<link>http://elegantcode.com/2008/11/24/orm-is-not-inherently-evil/comment-page-2/#comment-39749</link>
		<dc:creator>Davy Brion</dc:creator>
		<pubDate>Mon, 15 Dec 2008 20:47:40 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/?p=1560#comment-39749</guid>
		<description>for starters, you could take a look at this:
http://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/querycriteria.html
http://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/performance.html#performance-fetching
http://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/performance.html#performance-multi-query
http://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/performance.html#performance-batch-updates

there is a lot more information available on how to properly formulate queries and how to properly use an ORM.  You just have to be willing to properly investigate a technology before you dismiss it.</description>
		<content:encoded><![CDATA[<p>for starters, you could take a look at this:<br />
<a href="http://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/querycriteria.html" rel="nofollow">http://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/querycriteria.html</a><br />
<a href="http://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/performance.html#performance-fetching" rel="nofollow">http://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/performance.html#performance-fetching</a><br />
<a href="http://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/performance.html#performance-multi-query" rel="nofollow">http://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/performance.html#performance-multi-query</a><br />
<a href="http://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/performance.html#performance-batch-updates" rel="nofollow">http://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html/performance.html#performance-batch-updates</a></p>
<p>there is a lot more information available on how to properly formulate queries and how to properly use an ORM.  You just have to be willing to properly investigate a technology before you dismiss it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Xeno</title>
		<link>http://elegantcode.com/2008/11/24/orm-is-not-inherently-evil/comment-page-2/#comment-39748</link>
		<dc:creator>Xeno</dc:creator>
		<pubDate>Mon, 15 Dec 2008 20:46:27 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/?p=1560#comment-39748</guid>
		<description>I mean as a classic example, if I just need to grab a login from the user table and no additional data, I have to pull the entire user object thus pulling ALL user data mapped to that user. This is bloated. Doing this for one query is nothing but for 1000 or 10000 adds up. 

Doing joins are impossible unless you explicitly declare them and then what is the difference between that and an sql layer? None. To optimize, you again have to go back to hand coding sql which is the whole point to getting your database to be fast and scalable.

To which the sql layer is the best answer again.</description>
		<content:encoded><![CDATA[<p>I mean as a classic example, if I just need to grab a login from the user table and no additional data, I have to pull the entire user object thus pulling ALL user data mapped to that user. This is bloated. Doing this for one query is nothing but for 1000 or 10000 adds up. </p>
<p>Doing joins are impossible unless you explicitly declare them and then what is the difference between that and an sql layer? None. To optimize, you again have to go back to hand coding sql which is the whole point to getting your database to be fast and scalable.</p>
<p>To which the sql layer is the best answer again.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Xeno</title>
		<link>http://elegantcode.com/2008/11/24/orm-is-not-inherently-evil/comment-page-2/#comment-39747</link>
		<dc:creator>Xeno</dc:creator>
		<pubDate>Mon, 15 Dec 2008 20:42:37 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/?p=1560#comment-39747</guid>
		<description>Then provide an example because all the examples and data I have read are similar to that guys example where the mapping is very static and you are expected to recycle objects rather than building the query to fit the job.</description>
		<content:encoded><![CDATA[<p>Then provide an example because all the examples and data I have read are similar to that guys example where the mapping is very static and you are expected to recycle objects rather than building the query to fit the job.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
