<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-2015721107059280399.post331293305356884979..comments</id><updated>2009-06-13T02:05:50.159-07:00</updated><category term='oedilf'/><category term='crunchbang'/><category term='beer'/><category term='roald dahl'/><category term='rubyquiz'/><category term='continuous integration'/><category term='hackety hack'/><category term='news'/><category term='clojure'/><category term='movies'/><category term='books'/><category term='recruiting'/><category term='metric_fu'/><category term='google appengine'/><category term='aon'/><category term='osbridge'/><category term='kansas'/><category term='selenium'/><category term='cartoons'/><category term='art'/><category term='open source'/><category term='pycon'/><category term='chrome'/><category term='bazaar'/><category term='c#'/><category term='chirb'/><category term='firefox'/><category term='open source bridge'/><category term='ppa'/><category term='hippie comfort food'/><category term='society'/><category term='chipy'/><category term='software craftsmanship'/><category term='baking'/><category term='migrations'/><category term='rails'/><category term='nintendo'/><category term='diagrams'/><category term='vim'/><category term='launchpad'/><category term='alan kay'/><category term='xp'/><category term='fixtures'/><category term='java'/><category term='rock'/><category term='gnu/linux'/><category term='gpi'/><category term='css3'/><category term='dungeons and dragons'/><category term='apt'/><category term='cucumber'/><category term='thoughtworks'/><category term='lambda'/><category term='bash'/><category term='wordpress'/><category term='pair programming'/><category term='resume'/><category term='obama'/><category term='io'/><category term='ctags'/><category term='wes anderson'/><category term='x10'/><category term='rubymine'/><category term='sikuli'/><category term='mac'/><category term='darfur'/><category term='railsconf'/><category term='lambdaj'/><category term='heroku'/><category term='race'/><category term='ubuntu'/><category term='testing'/><category term='lolcats'/><category term='prototype'/><category term='subversion'/><category term='google'/><category term='screencast'/><category term='data mapper'/><category term='ruby'/><category term='ninjas'/><category term='textmate sucks nyah nyah nyah'/><category term='media'/><category term='activerecord'/><category term='javascript'/><category term='tex'/><category term='google api'/><category term='snozberries'/><category term='magic'/><category term='apple'/><category term='quote'/><category term='os x'/><category term='github'/><category term='youtube'/><category term='angry drunken dwarves'/><category term='gcs'/><category term='gosu'/><category term='python'/><category term='chipmunk'/><category term='chicago'/><category term='cruisecontrol'/><category term='bach'/><category term='ioke'/><category term='debian'/><category term='windows'/><category term='bea'/><category term='london'/><category term='inkscape'/><category term='jmx'/><category term='rake'/><category term='database'/><category term='linux'/><category term='shoes'/><category term='arduino'/><category term='engine yard'/><category term='ant'/><category term='soap'/><category term='oscon'/><category term='smalltalk'/><category term='programming'/><category term='politics'/><category term='metaprogramming'/><category term='games'/><category term='music'/><category term='blog'/><category term='shellsink'/><category term='literature'/><category term='regex'/><category term='jquery'/><category term='wikipedia'/><category term='unicorns'/><category term='blogger'/><category term='gdp'/><category term='food'/><category term='twitter'/><category term='zsh'/><category term='poetry'/><category term='mingle'/><category term='weird'/><category term='project management'/><category term='nsbe'/><title type='text'>Comments on Cuberick: To ORM or Not to ORM.</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.cuberick.com/feeds/331293305356884979/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2015721107059280399/331293305356884979/comments/default'/><link rel='alternate' type='text/html' href='http://www.cuberick.com/2009/06/to-orm-or-not-to-orm.html'/><author><name>Shlomo</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2015721107059280399.post-8353591934186092380</id><published>2009-06-13T02:05:50.159-07:00</published><updated>2009-06-13T02:05:50.159-07:00</updated><title type='text'>At some point you have to define your database col...</title><content type='html'>At some point you have to define your database columns, whether you&amp;#39;re sitting at a terminal typing in CREATE TABLE statements, using a UI to configure the table, or specifying the properties in the DataMapper model.  I don&amp;#39;t see AR&amp;#39;s approach more DRY than DM, or vice versa -- the knowledge has to live someplace and it takes roughly the same level of effort to define it in each of those places.&lt;br /&gt;&lt;br /&gt;One difference with having it inside the DataMapper model is that you don&amp;#39;t have to refer to anywhere else to know what properties your model has.&lt;br /&gt;&lt;br /&gt;It also allows things like auto-migrate, in which you can add/remove a property, or adjust a constraint, and regenerate the table quickly from the model snapshot.&lt;br /&gt;&lt;br /&gt;Sure once you start deploying to production, you have to write migrations just like AR. Although it is very useful when doing local development to be able to regenerate all the tables quickly in order to test something out.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2015721107059280399/331293305356884979/comments/default/8353591934186092380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2015721107059280399/331293305356884979/comments/default/8353591934186092380'/><link rel='alternate' type='text/html' href='http://www.cuberick.com/2009/06/to-orm-or-not-to-orm.html?showComment=1244883950159#c8353591934186092380' title=''/><author><name>dkubb</name><uri>http://www.blogger.com/profile/11017835890854426894</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.cuberick.com/2009/06/to-orm-or-not-to-orm.html' ref='tag:blogger.com,1999:blog-2015721107059280399.post-331293305356884979' source='http://www.blogger.com/feeds/2015721107059280399/posts/default/331293305356884979' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-885548331'/></entry><entry><id>tag:blogger.com,1999:blog-2015721107059280399.post-1023012507303634574</id><published>2009-06-04T11:12:52.334-07:00</published><updated>2009-06-04T11:12:52.334-07:00</updated><title type='text'>AR has column names and such in the runtime, you c...</title><content type='html'>AR has column names and such in the runtime, you can generate tables from DM. They simply approach it from different directions. I think describing either as more or less DRY is a misuse of the concept (don&amp;#39;t repeat Domain Knowledge, ie: Constants or Behaviour).&lt;br /&gt;&lt;br /&gt;Sara is mixing concepts. I&amp;#39;d disagree that a Form (which seems to basically be a Controller for her) is a part of your Domain Model. Repository, Presenter, Controller and Domain Model are all different things, and I suppose you might could make a better case for it, but I find the example lacking.&lt;br /&gt;&lt;br /&gt;The broader idea that your Domain Model is not your Persistence Layer is a good one I think, but I know of very few O/RMs that are &lt;i&gt;truly&lt;/i&gt; mappers for Plain Old X Objects without at least some concessions. At the end of the day, I think it&amp;#39;s just not very practical when you have in-memory databases, mocks, stubs, etc at your disposal.&lt;br /&gt;&lt;br /&gt;And look, I dislike Relational databases as much as the next guy, but I&amp;#39;ll say it now: this JSON/Document/OODB stuff is a fad. You&amp;#39;re going to have to spend some real money for real OODB (and it&amp;#39;s great, but nothing&amp;#39;s perfect, it has it&amp;#39;s own issues), and let me know when someone finds a JSON/Document store that can come within 1 order of magnitude of the performance of SQLServer or Oracle on &lt;b&gt;hundreds of millions&lt;/b&gt; of rows.&lt;br /&gt;&lt;br /&gt;Just because the OSS Databases suck (hey, I like/use Postgres, but price being equal, I&amp;#39;m picking SQLServer every time) doesn&amp;#39;t mean RDBMSs are dead, much less inferior. Quite the opposite if the Rails community were to investigate as opposed to rushing from fad to fad to fad ( new deployment stack anyone? :-p ).&lt;br /&gt;&lt;br /&gt;So long as the Rails guys fight community against community, so long will they be a little people, a silly people, greedy, barbarous, and cruel... ;-)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2015721107059280399/331293305356884979/comments/default/1023012507303634574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2015721107059280399/331293305356884979/comments/default/1023012507303634574'/><link rel='alternate' type='text/html' href='http://www.cuberick.com/2009/06/to-orm-or-not-to-orm.html?showComment=1244139172334#c1023012507303634574' title=''/><author><name>Sam Smoot</name><uri>http://www.blogger.com/profile/16299009875913815146</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.cuberick.com/2009/06/to-orm-or-not-to-orm.html' ref='tag:blogger.com,1999:blog-2015721107059280399.post-331293305356884979' source='http://www.blogger.com/feeds/2015721107059280399/posts/default/331293305356884979' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-281639789'/></entry><entry><id>tag:blogger.com,1999:blog-2015721107059280399.post-9109010589618314937</id><published>2009-06-03T23:44:45.951-07:00</published><updated>2009-06-03T23:44:45.951-07:00</updated><title type='text'>&lt;em&gt;
Active Record is the poster child for combini...</title><content type='html'>&lt;em&gt;&lt;br /&gt;Active Record is the poster child for combining ORM with the domain, and in the situation where you have complete control to define and change your DB it is great, though I think it comes at the cost of testability.&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;That&amp;#39;s an interesting comment – could you expand a little on why you think testability suffers when using Active Record?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2015721107059280399/331293305356884979/comments/default/9109010589618314937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2015721107059280399/331293305356884979/comments/default/9109010589618314937'/><link rel='alternate' type='text/html' href='http://www.cuberick.com/2009/06/to-orm-or-not-to-orm.html?showComment=1244097885951#c9109010589618314937' title=''/><author><name>Kerry Buckley</name><uri>http://www.blogger.com/profile/02577023370378479303</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://kerry.ontoa.st/wp-content/uploads/2006/12/mugshot1.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.cuberick.com/2009/06/to-orm-or-not-to-orm.html' ref='tag:blogger.com,1999:blog-2015721107059280399.post-331293305356884979' source='http://www.blogger.com/feeds/2015721107059280399/posts/default/331293305356884979' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1968041349'/></entry></feed>
