<?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: DBIx::Class vs Class::DBI vs Rose::DB::Object vs Fey::ORM</title>
	<atom:link href="http://blog.afoolishmanifesto.com/archives/822/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.afoolishmanifesto.com/archives/822</link>
	<description>fREWdiculous!</description>
	<lastBuildDate>Tue, 09 Mar 2010 02:34:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Grrrr</title>
		<link>http://blog.afoolishmanifesto.com/archives/822/comment-page-1#comment-216</link>
		<dc:creator>Grrrr</dc:creator>
		<pubDate>Mon, 29 Jun 2009 12:29:24 +0000</pubDate>
		<guid isPermaLink="false">http://blog.afoolishmanifesto.com/?p=822#comment-216</guid>
		<description>I would like to join the party and pitch an absolutely non-ORM solution, DBIx::Perlish, which comes up with a rather unusual way of doing the job.  Rewriting the fetch example
from the SQL::DB pitch above:

my @items = db_fetch {
   my $p : persons;
   my $a : addresses;

   join $p  db_fetch {
      $p-&gt;address == $a-&gt;id;
   };
   $a-&gt;city eq &quot;Springfield&quot;;
   $p-&gt;age &gt; 40;

   sort desc =&gt; $p-&gt;age;
   return $p-&gt;name, $p-&gt;age, $a-&gt;city;
   limit: 10;
};

And rewriting the update:

db_update {
   my $p : persons;

   $p-&gt;name eq &quot;Homer&quot;;

   $p-&gt;address = 2;
};

[disclaimer: I am the author of DBIx::Perlish]</description>
		<content:encoded><![CDATA[<p>I would like to join the party and pitch an absolutely non-ORM solution, DBIx::Perlish, which comes up with a rather unusual way of doing the job.  Rewriting the fetch example<br />
from the SQL::DB pitch above:</p>
<p>my @items = db_fetch {<br />
   my $p : persons;<br />
   my $a : addresses;</p>
<p>   join $p  db_fetch {<br />
      $p-&gt;address == $a-&gt;id;<br />
   };<br />
   $a-&gt;city eq &#8220;Springfield&#8221;;<br />
   $p-&gt;age &gt; 40;</p>
<p>   sort desc =&gt; $p-&gt;age;<br />
   return $p-&gt;name, $p-&gt;age, $a-&gt;city;<br />
   limit: 10;<br />
};</p>
<p>And rewriting the update:</p>
<p>db_update {<br />
   my $p : persons;</p>
<p>   $p-&gt;name eq &#8220;Homer&#8221;;</p>
<p>   $p-&gt;address = 2;<br />
};</p>
<p>[disclaimer: I am the author of DBIx::Perlish]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Lawrece</title>
		<link>http://blog.afoolishmanifesto.com/archives/822/comment-page-1#comment-211</link>
		<dc:creator>Mark Lawrece</dc:creator>
		<pubDate>Thu, 25 Jun 2009 05:57:52 +0000</pubDate>
		<guid isPermaLink="false">http://blog.afoolishmanifesto.com/?p=822#comment-211</guid>
		<description>Something that might also be of interest (but not necessarily for production use, yet) is SQL::DB:

  http://search.cpan.org/~MLAWREN/SQL-DB/lib/SQL/DB.pm

This is something slightly less of an ORM than the above described packages, but lets you get very close to SQL for fetching:

&lt;code&gt;
  my $iter = $db-&gt;fetch(
    select    =&gt; [$persons-&gt;name, $persons-&gt;age, $addresses-&gt;city],
    from      =&gt; $persons,
    left_join =&gt; $addresses,
    on        =&gt; $addresses-&gt;id == $persons-&gt;address,
    where     =&gt; ($addresses-&gt;city == &#039;Springfield&#039;) &amp; ($persons-&gt;age &gt; 40),
    order_by  =&gt; $persons-&gt;age-&gt;desc,
    limit     =&gt; 10,
  );

  while (my $item = $iter-&gt;next) {
      print $item-&gt;name, &#039;(&#039;,$item-&gt;age,&#039;) lives in &#039;, $item-&gt;city, &quot;\n&quot;;
  }
&lt;/code&gt;

And for modifications...

&lt;code&gt;
  $db-&gt;do(
    update =&gt; [$persons-&gt;set_address(2)],
    where  =&gt; $persons-&gt;name == &#039;Homer&#039;,
  );
&lt;/code&gt;

[disclaimer: I am the author of SQL::DB]</description>
		<content:encoded><![CDATA[<p>Something that might also be of interest (but not necessarily for production use, yet) is SQL::DB:</p>
<p>  <a href="http://search.cpan.org/~MLAWREN/SQL-DB/lib/SQL/DB.pm" rel="nofollow">http://search.cpan.org/~MLAWREN/SQL-DB/lib/SQL/DB.pm</a></p>
<p>This is something slightly less of an ORM than the above described packages, but lets you get very close to SQL for fetching:</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; my $iter = $db-&gt;fetch(<br />
&nbsp; &nbsp; select &nbsp; &nbsp;=&gt; [$persons-&gt;name, $persons-&gt;age, $addresses-&gt;city],<br />
&nbsp; &nbsp; from &nbsp; &nbsp; &nbsp;=&gt; $persons,<br />
&nbsp; &nbsp; left_join =&gt; $addresses,<br />
&nbsp; &nbsp; on &nbsp; &nbsp; &nbsp; &nbsp;=&gt; $addresses-&gt;id == $persons-&gt;address,<br />
&nbsp; &nbsp; where &nbsp; &nbsp; =&gt; ($addresses-&gt;city == 'Springfield') &amp; ($persons-&gt;age &gt; 40),<br />
&nbsp; &nbsp; order_by &nbsp;=&gt; $persons-&gt;age-&gt;desc,<br />
&nbsp; &nbsp; limit &nbsp; &nbsp; =&gt; 10,<br />
&nbsp; );<br />
<br />
&nbsp; while (my $item = $iter-&gt;next) {<br />
&nbsp; &nbsp; &nbsp; print $item-&gt;name, '(',$item-&gt;age,') lives in ', $item-&gt;city, &quot;\n&quot;;<br />
&nbsp; }</div></td></tr></tbody></table></div>
<p>And for modifications&#8230;</p>
<div class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; $db-&gt;do(<br />
&nbsp; &nbsp; update =&gt; [$persons-&gt;set_address(2)],<br />
&nbsp; &nbsp; where &nbsp;=&gt; $persons-&gt;name == 'Homer',<br />
&nbsp; );</div></td></tr></tbody></table></div>
<p>[disclaimer: I am the author of SQL::DB]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Marlon</title>
		<link>http://blog.afoolishmanifesto.com/archives/822/comment-page-1#comment-207</link>
		<dc:creator>Marlon</dc:creator>
		<pubDate>Mon, 22 Jun 2009 20:13:55 +0000</pubDate>
		<guid isPermaLink="false">http://blog.afoolishmanifesto.com/?p=822#comment-207</guid>
		<description>You&#039;re kidding right?  Last time I checked you also &quot;wrote&quot; to databases.</description>
		<content:encoded><![CDATA[<p>You&#8217;re kidding right?  Last time I checked you also &#8220;wrote&#8221; to databases.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: gus</title>
		<link>http://blog.afoolishmanifesto.com/archives/822/comment-page-1#comment-204</link>
		<dc:creator>gus</dc:creator>
		<pubDate>Fri, 19 Jun 2009 23:17:13 +0000</pubDate>
		<guid isPermaLink="false">http://blog.afoolishmanifesto.com/?p=822#comment-204</guid>
		<description>a more in depth comparison is here: http://www.perlmonks.org/?node_id=700283</description>
		<content:encoded><![CDATA[<p>a more in depth comparison is here: <a href="http://www.perlmonks.org/?node_id=700283" rel="nofollow">http://www.perlmonks.org/?node_id=700283</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: gus</title>
		<link>http://blog.afoolishmanifesto.com/archives/822/comment-page-1#comment-203</link>
		<dc:creator>gus</dc:creator>
		<pubDate>Fri, 19 Jun 2009 23:14:50 +0000</pubDate>
		<guid isPermaLink="false">http://blog.afoolishmanifesto.com/?p=822#comment-203</guid>
		<description>marion- isn&#039;t that what memcache is for?</description>
		<content:encoded><![CDATA[<p>marion- isn&#8217;t that what memcache is for?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Marlon</title>
		<link>http://blog.afoolishmanifesto.com/archives/822/comment-page-1#comment-202</link>
		<dc:creator>Marlon</dc:creator>
		<pubDate>Fri, 19 Jun 2009 18:51:38 +0000</pubDate>
		<guid isPermaLink="false">http://blog.afoolishmanifesto.com/?p=822#comment-202</guid>
		<description>You really should run the benchmarks of Rose::DB vs DBIC.  Your database layer is usually your slowest in your entire application, so that&#039;s important.  RDBO is also the ORM we use at CBSSPORTS.com because speed is important at this level.  I&#039;ll be interested in looking at what the new revision of DBIC with Moose does in that arena.  On a side note, I agree that the generative queries are excellent on DBIC.

_Marlon_</description>
		<content:encoded><![CDATA[<p>You really should run the benchmarks of Rose::DB vs DBIC.  Your database layer is usually your slowest in your entire application, so that&#8217;s important.  RDBO is also the ORM we use at CBSSPORTS.com because speed is important at this level.  I&#8217;ll be interested in looking at what the new revision of DBIC with Moose does in that arena.  On a side note, I agree that the generative queries are excellent on DBIC.</p>
<p>_Marlon_</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John</title>
		<link>http://blog.afoolishmanifesto.com/archives/822/comment-page-1#comment-201</link>
		<dc:creator>John</dc:creator>
		<pubDate>Fri, 19 Jun 2009 17:19:07 +0000</pubDate>
		<guid isPermaLink="false">http://blog.afoolishmanifesto.com/?p=822#comment-201</guid>
		<description>The first CPAN release of Rose::DB::Object was on 2005-03-09, making it 4 years, 3 months, and 10 days old today.  This version (0.01) has since been delete from CPAN, but you can see it on BACKPAN:

http://backpan.perl.org/authors/id/J/JS/JSIRACUSA/

and you can also see a record of it in the Changes file.  (RDBO also existed in (then) CVS for about a year prior to its first CPAN release.)</description>
		<content:encoded><![CDATA[<p>The first CPAN release of Rose::DB::Object was on 2005-03-09, making it 4 years, 3 months, and 10 days old today.  This version (0.01) has since been delete from CPAN, but you can see it on BACKPAN:</p>
<p><a href="http://backpan.perl.org/authors/id/J/JS/JSIRACUSA/" rel="nofollow">http://backpan.perl.org/authors/id/J/JS/JSIRACUSA/</a></p>
<p>and you can also see a record of it in the Changes file.  (RDBO also existed in (then) CVS for about a year prior to its first CPAN release.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt S Trout</title>
		<link>http://blog.afoolishmanifesto.com/archives/822/comment-page-1#comment-200</link>
		<dc:creator>Matt S Trout</dc:creator>
		<pubDate>Fri, 19 Jun 2009 12:50:04 +0000</pubDate>
		<guid isPermaLink="false">http://blog.afoolishmanifesto.com/?p=822#comment-200</guid>
		<description>DBIxDM is very interesting and Laurent Dami helps the DBIC team maintain SQL::Abstract - but he also doesn&#039;t manage to market it to save his life so very few people have heard of it.

Maybe somebody should convince ldami to join ironman ... :)</description>
		<content:encoded><![CDATA[<p>DBIxDM is very interesting and Laurent Dami helps the DBIC team maintain SQL::Abstract &#8211; but he also doesn&#8217;t manage to market it to save his life so very few people have heard of it.</p>
<p>Maybe somebody should convince ldami to join ironman &#8230; <img src='http://blog.afoolishmanifesto.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Zbigniew Lukasiak</title>
		<link>http://blog.afoolishmanifesto.com/archives/822/comment-page-1#comment-199</link>
		<dc:creator>Zbigniew Lukasiak</dc:creator>
		<pubDate>Fri, 19 Jun 2009 07:45:42 +0000</pubDate>
		<guid isPermaLink="false">http://blog.afoolishmanifesto.com/?p=822#comment-199</guid>
		<description>I understand that you had to make a selection here but I think you should include &lt;a href=&quot;http://search.cpan.org/~dami/DBIx-DataModel/lib/DBIx/DataModel.pm&quot; rel=&quot;nofollow&quot;&gt;DBIx::DataModel&lt;/a&gt;.   In my opinion it is a serious contender.</description>
		<content:encoded><![CDATA[<p>I understand that you had to make a selection here but I think you should include <a href="http://search.cpan.org/~dami/DBIx-DataModel/lib/DBIx/DataModel.pm" rel="nofollow">DBIx::DataModel</a>.   In my opinion it is a serious contender.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
