<?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: Choosing an ORM strategy</title>
	<atom:link href="http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/feed/" rel="self" type="application/rss+xml" />
	<link>http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/</link>
	<description>Strong opinions, weakly held</description>
	<lastBuildDate>Wed, 19 Jun 2013 09:44:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
	<item>
		<title>By: Blake H</title>
		<link>http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/#comment-5205</link>
		<dc:creator>Blake H</dc:creator>
		<pubDate>Tue, 23 Oct 2012 12:50:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/#comment-5205</guid>
		<description>Stop spreading FUD.  I do recommend developers start with an understanding of SQL and then realize that much smarter people have developed solutions that make our jobs less mundane and our code easier to maintain.  When you don&#039;t understand how an ORM works, then you are going to have a problem.  The solution to that problem isn&#039;t to ignore ORMs.</description>
		<content:encoded><![CDATA[<p>Stop spreading FUD.  I do recommend developers start with an understanding of SQL and then realize that much smarter people have developed solutions that make our jobs less mundane and our code easier to maintain.  When you don&#8217;t understand how an ORM works, then you are going to have a problem.  The solution to that problem isn&#8217;t to ignore ORMs.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Should we still be using stored procedures? &#171; whygwarren</title>
		<link>http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/#comment-5132</link>
		<dc:creator>Should we still be using stored procedures? &#171; whygwarren</dc:creator>
		<pubDate>Mon, 22 Oct 2012 16:41:54 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/#comment-5132</guid>
		<description>[...] against http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/ against  I&#8217;m still not sure. Share this:TwitterFacebookLike this:LikeBe the first to like [...]</description>
		<content:encoded><![CDATA[<p>[...] against <a href="http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/" rel="nofollow">http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/</a> against  I&#8217;m still not sure. Share this:TwitterFacebookLike this:LikeBe the first to like [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Micro-ORMs for .NET Compared &#8211; Part 1 &#171; The Public Void</title>
		<link>http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/#comment-4829</link>
		<dc:creator>Micro-ORMs for .NET Compared &#8211; Part 1 &#171; The Public Void</dc:creator>
		<pubDate>Mon, 20 Aug 2012 03:20:23 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/#comment-4829</guid>
		<description>[...] I have been made aware of a lightweight alternative to full-blown ORMs like NHibernate and Entity Framework.  They’re [...]</description>
		<content:encoded><![CDATA[<p>[...] I have been made aware of a lightweight alternative to full-blown ORMs like NHibernate and Entity Framework.  They’re [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Choosing an ORM strategy &#124; hakre on wordpress</title>
		<link>http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/#comment-4791</link>
		<dc:creator>Choosing an ORM strategy &#124; hakre on wordpress</dc:creator>
		<pubDate>Mon, 30 Jul 2012 07:25:46 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/#comment-4791</guid>
		<description>[...] Choosing an ORM strategy (by Jimmy Bogard; 20 Jul 2012) TwitterRedditDiggEmailPrintMoreFacebook   This entry was posted in Linked, Uncategorized and tagged Design, Development, Mistake, ORM. Bookmark the permalink.    &#8592; wetter.com &#8211; Relaunch with symfony2, Assetic, Varnish and&#160;Twig [...]</description>
		<content:encoded><![CDATA[<p>[...] Choosing an ORM strategy (by Jimmy Bogard; 20 Jul 2012) TwitterRedditDiggEmailPrintMoreFacebook   This entry was posted in Linked, Uncategorized and tagged Design, Development, Mistake, ORM. Bookmark the permalink.    &larr; wetter.com &#8211; Relaunch with symfony2, Assetic, Varnish and&nbsp;Twig [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anonymous</title>
		<link>http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/#comment-4763</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Thu, 26 Jul 2012 01:17:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/#comment-4763</guid>
		<description>I know what you mean. You&#039;re probably stuck with using a complicated wrapper solution that someone else wrote, and it seems like a big black box right? I think you&#039;ll find it&#039;s worth it in the end, especially when you have to write something new and you can tweak the wrapper (or completely rewrite it).</description>
		<content:encoded><![CDATA[<p>I know what you mean. You&#8217;re probably stuck with using a complicated wrapper solution that someone else wrote, and it seems like a big black box right? I think you&#8217;ll find it&#8217;s worth it in the end, especially when you have to write something new and you can tweak the wrapper (or completely rewrite it).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anonymous</title>
		<link>http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/#comment-4751</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Tue, 24 Jul 2012 21:07:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/#comment-4751</guid>
		<description>Raw SQL all the way. I only use the entity models w/ NHibernate if I&#039;m dealing with one entity.

But, I can still do raw SQL and use NHibernate (or insert other micro-ORM here) for just adhoc DML things.

I even have a process that does bulk insert of persistent NHibernate entities because it&#039;s the fastest way. SQL bulk insert of pre-generated entities flattened out into a datatable because there&#039;s 100s of Ks of records. And since we have a test on it, well, who cares right? Just let it do what it needs to do.</description>
		<content:encoded><![CDATA[<p>Raw SQL all the way. I only use the entity models w/ NHibernate if I&#8217;m dealing with one entity.</p>
<p>But, I can still do raw SQL and use NHibernate (or insert other micro-ORM here) for just adhoc DML things.</p>
<p>I even have a process that does bulk insert of persistent NHibernate entities because it&#8217;s the fastest way. SQL bulk insert of pre-generated entities flattened out into a datatable because there&#8217;s 100s of Ks of records. And since we have a test on it, well, who cares right? Just let it do what it needs to do.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrei Rinea</title>
		<link>http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/#comment-4749</link>
		<dc:creator>Andrei Rinea</dc:creator>
		<pubDate>Tue, 24 Jul 2012 20:50:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/#comment-4749</guid>
		<description>Fine article, Jimmy!

I had the opportunity to exchange some tweets about ORMs with you so you might already know my opinion regarding ORMs in general. However I must ask something that is not covered in this article.

How about batch update/delete&#039;s ? How do you handle them? I mean I might need to delete 500,000+ expired rows from the table OFFERS (for example). NHibernate, for example, offers me two alternatives : 500,000+ reads followed by 500,000+ deletes or untyped/stringly-typed HQL.

What&#039;s your recommandation? I do RAW SQL / sprocs for these...

Thank you.</description>
		<content:encoded><![CDATA[<p>Fine article, Jimmy!</p>
<p>I had the opportunity to exchange some tweets about ORMs with you so you might already know my opinion regarding ORMs in general. However I must ask something that is not covered in this article.</p>
<p>How about batch update/delete&#8217;s ? How do you handle them? I mean I might need to delete 500,000+ expired rows from the table OFFERS (for example). NHibernate, for example, offers me two alternatives : 500,000+ reads followed by 500,000+ deletes or untyped/stringly-typed HQL.</p>
<p>What&#8217;s your recommandation? I do RAW SQL / sprocs for these&#8230;</p>
<p>Thank you.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Don&#8217;t write your own ORM &#124; Jimmy Bogard&#039;s Blog</title>
		<link>http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/#comment-4734</link>
		<dc:creator>Don&#8217;t write your own ORM &#124; Jimmy Bogard&#039;s Blog</dc:creator>
		<pubDate>Tue, 24 Jul 2012 12:49:32 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/#comment-4734</guid>
		<description>[...] my last post, I talked about various kinds of patterns of ORMs and how to choose an ORM strategy. From the comments and tweets I got, it seems like some folks still think that their only ORM [...]</description>
		<content:encoded><![CDATA[<p>[...] my last post, I talked about various kinds of patterns of ORMs and how to choose an ORM strategy. From the comments and tweets I got, it seems like some folks still think that their only ORM [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Demis Bellot</title>
		<link>http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/#comment-4737</link>
		<dc:creator>Demis Bellot</dc:creator>
		<pubDate>Mon, 23 Jul 2012 23:06:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/#comment-4737</guid>
		<description>Right it&#039;s being used because of performance, 12x faster than Entity Framework:
http://www.servicestack.net/benchmarks/#dapper </description>
		<content:encoded><![CDATA[<p>Right it&#8217;s being used because of performance, 12x faster than Entity Framework:<br />
<a href="http://www.servicestack.net/benchmarks/#dapper " rel="nofollow">http://www.servicestack.net/benchmarks/#dapper </a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Demis Bellot</title>
		<link>http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/#comment-4736</link>
		<dc:creator>Demis Bellot</dc:creator>
		<pubDate>Mon, 23 Jul 2012 22:39:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/jimmybogard/2012/07/20/choosing-an-orm-strategy/#comment-4736</guid>
		<description>The biggest problem with Heavy ORMs is the leaky abstraction. SQL is already a DSL for managing an RDBMS, sticking it behind a heavy ORM requires you to map Relational -&gt; OOP mapping in configuration - which is inferior, more limiting, less verifiable and less explicit than source code.

&gt;&gt; The key is to not tie yourself down to a specific tool or approach.  

Although many ORM&#039;s want to own the world, i.e. you have 1 config/dbml model for your entire database. Micro ORMs at least work off connection strings and POCOs, they are easily interchangeable, e.g. at StackOverflow Careers we use https://github.com/ServiceStack/ServiceStack.OrmLite + http://code.google.com/p/dapper-dot-net/ (the 2 fastest ORMs) off the same DB Connection with the same Models. 

Since the Micro ORM POCO models are also re-usable, they&#039;re not tainted with RDBMS constraints so we&#039;re free to use them as DataContainers, ViewModels, DTO&#039;s etc when we see fit.

Another problem is the complexity around managing child view objects, in a perfectly normalized database these would all be different tables - In practice you get much better productivity, freedom and versionability storing value objects in schema-less text blobs. We love doing this in NoSQL DBs, but many are still reluctant to do this inside an RDBMS because of decades old teaching. 

Here&#039;s an example of the versionability schema-less tex blobs offer: https://github.com/ServiceStack/ServiceStack.Redis/wiki/MigrationsUsingSchemalessNoSql
 
Because of the productivity wins, OrmLite has first-class support for this where every complex-type property (i.e. non-scalar) is stored in a schema-less text blob, apart from letting you make structural changes without out-of-band DDL changes, it lets you re-use the same POCO in DTOs, Caching/Sessions, NoSQL DBs, Disk/Files, etc:
https://github.com/ServiceStack/ServiceStack.OrmLite#code-first-customer--order-example-with-complex-types-on-poco-as-text-blobs </description>
		<content:encoded><![CDATA[<p>The biggest problem with Heavy ORMs is the leaky abstraction. SQL is already a DSL for managing an RDBMS, sticking it behind a heavy ORM requires you to map Relational -&gt; OOP mapping in configuration &#8211; which is inferior, more limiting, less verifiable and less explicit than source code.</p>
<p>&gt;&gt; The key is to not tie yourself down to a specific tool or approach.  </p>
<p>Although many ORM&#8217;s want to own the world, i.e. you have 1 config/dbml model for your entire database. Micro ORMs at least work off connection strings and POCOs, they are easily interchangeable, e.g. at StackOverflow Careers we use <a href="https://github.com/ServiceStack/ServiceStack.OrmLite" rel="nofollow">https://github.com/ServiceStack/ServiceStack.OrmLite</a> + <a href="http://code.google.com/p/dapper-dot-net/" rel="nofollow">http://code.google.com/p/dapper-dot-net/</a> (the 2 fastest ORMs) off the same DB Connection with the same Models. </p>
<p>Since the Micro ORM POCO models are also re-usable, they&#8217;re not tainted with RDBMS constraints so we&#8217;re free to use them as DataContainers, ViewModels, DTO&#8217;s etc when we see fit.</p>
<p>Another problem is the complexity around managing child view objects, in a perfectly normalized database these would all be different tables &#8211; In practice you get much better productivity, freedom and versionability storing value objects in schema-less text blobs. We love doing this in NoSQL DBs, but many are still reluctant to do this inside an RDBMS because of decades old teaching. </p>
<p>Here&#8217;s an example of the versionability schema-less tex blobs offer: https://github.com/ServiceStack/ServiceStack.Redis/wiki/MigrationsUsingSchemalessNoSql<br />
 <br />
Because of the productivity wins, OrmLite has first-class support for this where every complex-type property (i.e. non-scalar) is stored in a schema-less text blob, apart from letting you make structural changes without out-of-band DDL changes, it lets you re-use the same POCO in DTOs, Caching/Sessions, NoSQL DBs, Disk/Files, etc:<br />
<a href="https://github.com/ServiceStack/ServiceStack.OrmLite#code-first-customer--order-example-with-complex-types-on-poco-as-text-blobs " rel="nofollow">https://github.com/ServiceStack/ServiceStack.OrmLite#code-first-customer&#8211;order-example-with-complex-types-on-poco-as-text-blobs </a></p>
]]></content:encoded>
	</item>
</channel>
</rss>
