<?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: DDD &amp; Many to Many Object Relational Mapping</title>
	<atom:link href="http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/</link>
	<description>Enterprise Development Expert &#38; SOA Specialist</description>
	<lastBuildDate>Sun, 14 Mar 2010 06:27:00 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Christian</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-37023</link>
		<dc:creator>Christian</dc:creator>
		<pubDate>Mon, 08 Feb 2010 10:53:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-37023</guid>
		<description>Just a stupid question. Why is an address a value object???</description>
		<content:encoded><![CDATA[<p>Just a stupid question. Why is an address a value object???</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Elegant Code &#187; Tips for ORM Data Access</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-36838</link>
		<dc:creator>Elegant Code &#187; Tips for ORM Data Access</dc:creator>
		<pubDate>Thu, 12 Nov 2009 21:22:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-36838</guid>
		<description>[...] Learn how to identify the right aggregate [...]</description>
		<content:encoded><![CDATA[<p>[...] Learn how to identify the right aggregate [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Part 9: NHibernate transactions - NHibernate blog - NHibernate Forge</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-36677</link>
		<dc:creator>Part 9: NHibernate transactions - NHibernate blog - NHibernate Forge</dc:creator>
		<pubDate>Tue, 08 Sep 2009 11:58:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-36677</guid>
		<description>[...] Partial failures can be good. The programmer in all of us sees that and screams atomicity. Transactions&#160; should be all-or-nothing. Anything less is just wrong. Right? In real life, there are instances where we allow, and even prefer partial failures of business transactions. Udi gives us a great example. Would you leave the grocery store empty handed simply because they were out of one item on your list? Probably not. When you’re gathering requirements, be sure to ask questions about the proper way to fail. “Roll it all back” isn’t the only option. [...]</description>
		<content:encoded><![CDATA[<p>[...] Partial failures can be good. The programmer in all of us sees that and screams atomicity. Transactions&#160; should be all-or-nothing. Anything less is just wrong. Right? In real life, there are instances where we allow, and even prefer partial failures of business transactions. Udi gives us a great example. Would you leave the grocery store empty handed simply because they were out of one item on your list? Probably not. When you’re gathering requirements, be sure to ask questions about the proper way to fail. “Roll it all back” isn’t the only option. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Part 9: NHibernate transactions &#171; BASICly everything</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-36676</link>
		<dc:creator>Part 9: NHibernate transactions &#171; BASICly everything</dc:creator>
		<pubDate>Tue, 08 Sep 2009 11:53:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-36676</guid>
		<description>[...] Partial failures can be good. The programmer in all of us sees that and screams atomicity. Transactions&#160; should be all-or-nothing. Anything less is just wrong. Right? In real life, there are instances where we allow, and even prefer partial failures of business transactions. Udi gives us a great example. Would you leave the grocery store empty handed simply because they were out of one item on your list? Probably not. When you’re gathering requirements, be sure to ask questions about the proper way to fail. “Roll it all back” isn’t the only option. [...]</description>
		<content:encoded><![CDATA[<p>[...] Partial failures can be good. The programmer in all of us sees that and screams atomicity. Transactions&#160; should be all-or-nothing. Anything less is just wrong. Right? In real life, there are instances where we allow, and even prefer partial failures of business transactions. Udi gives us a great example. Would you leave the grocery store empty handed simply because they were out of one item on your list? Probably not. When you’re gathering requirements, be sure to ask questions about the proper way to fail. “Roll it all back” isn’t the only option. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: udidahan</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-36069</link>
		<dc:creator>udidahan</dc:creator>
		<pubDate>Mon, 09 Mar 2009 22:04:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-36069</guid>
		<description>Ramin,

I&#039;d need a fair bit more information about the other use cases and relevant data to say anything about the scenario you&#039;re alluding to.</description>
		<content:encoded><![CDATA[<p>Ramin,</p>
<p>I&#8217;d need a fair bit more information about the other use cases and relevant data to say anything about the scenario you&#8217;re alluding to.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ramin</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-36061</link>
		<dc:creator>Ramin</dc:creator>
		<pubDate>Fri, 06 Mar 2009 09:48:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-36061</guid>
		<description>If the board not only posts jobs but other information, would you then have 3 aggregates roots: job, info-board and info-board-job-posting? Would the info-board-job-posting aggregate root then subscribe to the two others in a publish/subscribe solution? How would that be best modeled?</description>
		<content:encoded><![CDATA[<p>If the board not only posts jobs but other information, would you then have 3 aggregates roots: job, info-board and info-board-job-posting? Would the info-board-job-posting aggregate root then subscribe to the two others in a publish/subscribe solution? How would that be best modeled?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: udidahan</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-36000</link>
		<dc:creator>udidahan</dc:creator>
		<pubDate>Tue, 03 Feb 2009 09:44:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-36000</guid>
		<description>Nuno,

It&#039;s not that the partial failures dictate which object is the aggregate root, but they indicate that the intuitive answer isn&#039;t necessarily correct.

&gt; IMHO there is no such thing as partial failures

Well, that&#039;s a question that should be put to the business. If we include in the discussion the time within which the system will be consistent one way or the other (say, 1 minute), you may find that partial failures and eventual consistency are quite acceptable.

Also, it&#039;s usually easier to scale a system built around partial failures than one founded in 100% consistency.

And thanks for sharing your personal views - it&#039;s really valuable seeing other perspectives.</description>
		<content:encoded><![CDATA[<p>Nuno,</p>
<p>It&#8217;s not that the partial failures dictate which object is the aggregate root, but they indicate that the intuitive answer isn&#8217;t necessarily correct.</p>
<p>> IMHO there is no such thing as partial failures</p>
<p>Well, that&#8217;s a question that should be put to the business. If we include in the discussion the time within which the system will be consistent one way or the other (say, 1 minute), you may find that partial failures and eventual consistency are quite acceptable.</p>
<p>Also, it&#8217;s usually easier to scale a system built around partial failures than one founded in 100% consistency.</p>
<p>And thanks for sharing your personal views &#8211; it&#8217;s really valuable seeing other perspectives.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dew Drop - February 1, 2009 &#124; Alvin Ashcraft's Morning Dew</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-35992</link>
		<dc:creator>Dew Drop - February 1, 2009 &#124; Alvin Ashcraft's Morning Dew</dc:creator>
		<pubDate>Sun, 01 Feb 2009 20:59:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-35992</guid>
		<description>[...] DDD &amp; Many to Many Object Relational Mapping and ALT.NET DDD Podcast (Udi Dahan) [...]</description>
		<content:encoded><![CDATA[<p>[...] DDD &amp; Many to Many Object Relational Mapping and ALT.NET DDD Podcast (Udi Dahan) [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nuno Lopes</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-35989</link>
		<dc:creator>Nuno Lopes</dc:creator>
		<pubDate>Fri, 30 Jan 2009 16:13:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-35989</guid>
		<description>I failed to mention interactions my explanation so here it is on the service layer:

// begin transaction
....
JobVacancyPost aJVP = new JobVancncyPost(Job); // usually this is how roles are created
aJVP.Send(aJobBoard)
tx.Commit();
...
// end transaction

IMHO there is no such thing as partial failures. If there is business rule stating that all Job Vacancies should be advertised or not at all, then most probabably a JobVancancySheet is in order. If this the case we would have:

....
try catch()
{
tx.begin()
var job = s.Get(jobId);
JobVacancySheet aJVS = new JobVacancySheet();
foreach(Guid id in boardIds)
  {
     aJVS.Add(aJob, session.Get(id));
  }
JobVacancySheet.Send();
tx.Commit()
}
catch {Exception ex)
{
   // depending on the expcetion it would postpone sending to later (say external services are down) or fail completely advising the user to correct the sheet.
}

Nuno Lopes
PS: This are my personal views, in no way whatsover they are absolute.</description>
		<content:encoded><![CDATA[<p>I failed to mention interactions my explanation so here it is on the service layer:</p>
<p>// begin transaction<br />
&#8230;.<br />
JobVacancyPost aJVP = new JobVancncyPost(Job); // usually this is how roles are created<br />
aJVP.Send(aJobBoard)<br />
tx.Commit();<br />
&#8230;<br />
// end transaction</p>
<p>IMHO there is no such thing as partial failures. If there is business rule stating that all Job Vacancies should be advertised or not at all, then most probabably a JobVancancySheet is in order. If this the case we would have:</p>
<p>&#8230;.<br />
try catch()<br />
{<br />
tx.begin()<br />
var job = s.Get(jobId);<br />
JobVacancySheet aJVS = new JobVacancySheet();<br />
foreach(Guid id in boardIds)<br />
  {<br />
     aJVS.Add(aJob, session.Get(id));<br />
  }<br />
JobVacancySheet.Send();<br />
tx.Commit()<br />
}<br />
catch {Exception ex)<br />
{<br />
   // depending on the expcetion it would postpone sending to later (say external services are down) or fail completely advising the user to correct the sheet.<br />
}</p>
<p>Nuno Lopes<br />
PS: This are my personal views, in no way whatsover they are absolute.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nuno Lopes</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-35987</link>
		<dc:creator>Nuno Lopes</dc:creator>
		<pubDate>Fri, 30 Jan 2009 15:44:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-35987</guid>
		<description>I liked the mention of partial failures and its often forgotten in batch business transactions scenarios. Nevertheless I fail to understand how that particular business requirement actually mandates who the root should be.

Whoever read Streamlined Object Modelling (wich I strongly advise) basically understand that the collaboration director between two objects should have the business function (your aggregate root), the other is optional. Now the collaboration director depends on the complexitiy of business rules within that collaboration. 

* Does the JobBoard imposes any constraints over inlisting Job Vancacies?

* Does the Job (or a Job with status vacant) imposes any constraints over advertising on specific JobBoards (one would not publish a Job Vacancy of Finantial Director of a top 5 company on an IT Job Boards)?

In a situation like this Many-To-Many usually the collaboration director should be the one who carries the most complex business constraints.

I&#039;m always very, very suspicious about Many to Many relationships. In most cases it means that the domain is not well understood as roles are not in place (Modeling in Color &amp; Streamlined Object Modeling).

Let me explain.

You are absolutely right, we should not couple what does not need to be coupled. That is, if the Job class represents mostely anything else then a Job Vacancy ready to be advertised then a new Class JobVacancyPost is needed. This JobVacancyPost is the Role of a Job within this collaboration (read Modeling in Color or serch for the Domain Neutral Componentt) modelled as a separate class, not even part of the core HR domain of a Company (where Job and JobSpecification are modeled).

Job{1:N} JobVacancyPost (Role+MI) {N:1} JobBoard

JobVacancyPost is a first order object in the domain (as it workds as a Role of Job and a Post in a Job Board) so it does not hurt anyone to state that it should be located by a Repository.

&quot;That’s not so bad, but not as pretty as object traversal.&quot;

There is no such thing IMHO. if the natural way would be through object transversal means that the domain is not well understood by the developer (aka as not well mapped).  

In other words we can most of the times reduce a M:N relationship to either {1:N} or to {1:N:1} only if the domain allows from pure DDD (othwerwise Domain Drive = Model Driven IMHO), nothing else nothing more. If not more sooner then later you will face problems, hacks and turns.

Execuse my ramblings in my first post and I&#039;m learning.

Nuno Lopes
PS: If people don&#039;t know what DNC is look for this http://www.step-10.com/SoftwareDesign/ModellingInColour/TheDomainNeutralComponent.htmlor this http://www.petercoad.com/download/bookpdfs/jmcuch01.pdf</description>
		<content:encoded><![CDATA[<p>I liked the mention of partial failures and its often forgotten in batch business transactions scenarios. Nevertheless I fail to understand how that particular business requirement actually mandates who the root should be.</p>
<p>Whoever read Streamlined Object Modelling (wich I strongly advise) basically understand that the collaboration director between two objects should have the business function (your aggregate root), the other is optional. Now the collaboration director depends on the complexitiy of business rules within that collaboration. </p>
<p>* Does the JobBoard imposes any constraints over inlisting Job Vancacies?</p>
<p>* Does the Job (or a Job with status vacant) imposes any constraints over advertising on specific JobBoards (one would not publish a Job Vacancy of Finantial Director of a top 5 company on an IT Job Boards)?</p>
<p>In a situation like this Many-To-Many usually the collaboration director should be the one who carries the most complex business constraints.</p>
<p>I&#8217;m always very, very suspicious about Many to Many relationships. In most cases it means that the domain is not well understood as roles are not in place (Modeling in Color &amp; Streamlined Object Modeling).</p>
<p>Let me explain.</p>
<p>You are absolutely right, we should not couple what does not need to be coupled. That is, if the Job class represents mostely anything else then a Job Vacancy ready to be advertised then a new Class JobVacancyPost is needed. This JobVacancyPost is the Role of a Job within this collaboration (read Modeling in Color or serch for the Domain Neutral Componentt) modelled as a separate class, not even part of the core HR domain of a Company (where Job and JobSpecification are modeled).</p>
<p>Job{1:N} JobVacancyPost (Role+MI) {N:1} JobBoard</p>
<p>JobVacancyPost is a first order object in the domain (as it workds as a Role of Job and a Post in a Job Board) so it does not hurt anyone to state that it should be located by a Repository.</p>
<p>&#8220;That’s not so bad, but not as pretty as object traversal.&#8221;</p>
<p>There is no such thing IMHO. if the natural way would be through object transversal means that the domain is not well understood by the developer (aka as not well mapped).  </p>
<p>In other words we can most of the times reduce a M:N relationship to either {1:N} or to {1:N:1} only if the domain allows from pure DDD (othwerwise Domain Drive = Model Driven IMHO), nothing else nothing more. If not more sooner then later you will face problems, hacks and turns.</p>
<p>Execuse my ramblings in my first post and I&#8217;m learning.</p>
<p>Nuno Lopes<br />
PS: If people don&#8217;t know what DNC is look for this <a href="http://www.step-10.com/SoftwareDesign/ModellingInColour/TheDomainNeutralComponent.htmlor" rel="nofollow">http://www.step-10.com/SoftwareDesign/ModellingInColour/TheDomainNeutralComponent.htmlor</a> this <a href="http://www.petercoad.com/download/bookpdfs/jmcuch01.pdf" rel="nofollow">http://www.petercoad.com/download/bookpdfs/jmcuch01.pdf</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: udidahan</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-35983</link>
		<dc:creator>udidahan</dc:creator>
		<pubDate>Thu, 29 Jan 2009 22:57:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-35983</guid>
		<description>Marc, Andy,

You&#039;re both right.
In one bounded context, Job is an aggregate root, in another, it&#039;s Job Board.</description>
		<content:encoded><![CDATA[<p>Marc, Andy,</p>
<p>You&#8217;re both right.<br />
In one bounded context, Job is an aggregate root, in another, it&#8217;s Job Board.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andy Hitchman</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-35980</link>
		<dc:creator>Andy Hitchman</dc:creator>
		<pubDate>Tue, 27 Jan 2009 21:52:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-35980</guid>
		<description>I&#039;d suggest that Job is probably more important to the users managing recruitment. The domain around Jobs is likely much richer than this example has so far explored. This would lead me to infer that Job is the aggregate root. 

If you wish to abstract the association of Job Board to Job, then perhaps a service to control the publication of Jobs to Job Boards is more appropriate.</description>
		<content:encoded><![CDATA[<p>I&#8217;d suggest that Job is probably more important to the users managing recruitment. The domain around Jobs is likely much richer than this example has so far explored. This would lead me to infer that Job is the aggregate root. </p>
<p>If you wish to abstract the association of Job Board to Job, then perhaps a service to control the publication of Jobs to Job Boards is more appropriate.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Marc Brooks</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-35978</link>
		<dc:creator>Marc Brooks</dc:creator>
		<pubDate>Tue, 27 Jan 2009 05:10:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-35978</guid>
		<description>So, can a job &quot;be&quot; until it&#039;s been posted to a board?  Is a board useful (in an non-admin sense / more than a lookup table) until some job is posted to it?

Perhaps the REAL root is the Job Posting, which is queried for matching jobs or boards. I&#039;ve found that most output/report pages (which is what most software is about--getting the data out in useful projections) is presented in some form of list, so defining the aggregate root &quot;property&quot; as a collection of JobBoardPosting is the clearest approach to me.</description>
		<content:encoded><![CDATA[<p>So, can a job &#8220;be&#8221; until it&#8217;s been posted to a board?  Is a board useful (in an non-admin sense / more than a lookup table) until some job is posted to it?</p>
<p>Perhaps the REAL root is the Job Posting, which is queried for matching jobs or boards. I&#8217;ve found that most output/report pages (which is what most software is about&#8211;getting the data out in useful projections) is presented in some form of list, so defining the aggregate root &#8220;property&#8221; as a collection of JobBoardPosting is the clearest approach to me.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Hart</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-35974</link>
		<dc:creator>Michael Hart</dc:creator>
		<pubDate>Mon, 26 Jan 2009 23:32:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-35974</guid>
		<description>@Sean - I assume that Udi meant the shift from many-to-many to one-to-many only happened in the mapping itself (ie, the Job class no longer has a property relating to JobBoard at all - whether singular or plural). A many-to-many is really like two one-to-manys and in this case one of those has been hidden at the object level. The database tables could still be mapped in the original many-to-many fashion.</description>
		<content:encoded><![CDATA[<p>@Sean &#8211; I assume that Udi meant the shift from many-to-many to one-to-many only happened in the mapping itself (ie, the Job class no longer has a property relating to JobBoard at all &#8211; whether singular or plural). A many-to-many is really like two one-to-manys and in this case one of those has been hidden at the object level. The database tables could still be mapped in the original many-to-many fashion.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: udidahan</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-35970</link>
		<dc:creator>udidahan</dc:creator>
		<pubDate>Mon, 26 Jan 2009 20:18:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-35970</guid>
		<description>Ayende, Tapio, Sean,

For me, &quot;aggregate root&quot; is the DDD term for &quot;only calling one method on one object in your service layer&quot;. In other words, it&#039;s use case specific, and not an inherent structural property of the domain model.

Hope that helps.</description>
		<content:encoded><![CDATA[<p>Ayende, Tapio, Sean,</p>
<p>For me, &#8220;aggregate root&#8221; is the DDD term for &#8220;only calling one method on one object in your service layer&#8221;. In other words, it&#8217;s use case specific, and not an inherent structural property of the domain model.</p>
<p>Hope that helps.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sean Chambers</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-35969</link>
		<dc:creator>Sean Chambers</dc:creator>
		<pubDate>Mon, 26 Jan 2009 12:59:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-35969</guid>
		<description>Excellent example, but you seem to have removed one of the requirements that you originally stated to get it to fit into your example:

&quot;A job can be posted to multiple job boards. And a job board can have multiple jobs posted.&quot;

If thats the case, how can you still achieve that with a Job only belonging to one job board? It seems like your example works, but violates the requirements that were originally stated.</description>
		<content:encoded><![CDATA[<p>Excellent example, but you seem to have removed one of the requirements that you originally stated to get it to fit into your example:</p>
<p>&#8220;A job can be posted to multiple job boards. And a job board can have multiple jobs posted.&#8221;</p>
<p>If thats the case, how can you still achieve that with a Job only belonging to one job board? It seems like your example works, but violates the requirements that were originally stated.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: BizTalk Linkflood, January 26, 2009 &#171; ADA ICT Devsquad&#8217;s Blog</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-35968</link>
		<dc:creator>BizTalk Linkflood, January 26, 2009 &#171; ADA ICT Devsquad&#8217;s Blog</dc:creator>
		<pubDate>Mon, 26 Jan 2009 09:23:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-35968</guid>
		<description>[...] DDD &amp; Many to Many Object Relational Mapping&#160; [...]</description>
		<content:encoded><![CDATA[<p>[...] DDD &amp; Many to Many Object Relational Mapping&nbsp; [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Reflective Perspective - Chris Alcock &#187; The Morning Brew #272</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-35967</link>
		<dc:creator>Reflective Perspective - Chris Alcock &#187; The Morning Brew #272</dc:creator>
		<pubDate>Mon, 26 Jan 2009 08:07:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-35967</guid>
		<description>[...] DDD &amp; Many to Many Object Relational Mapping - Udi Dahan takes a look at the complexities of Many To Many Mappings using ORM technology from an architectural / DDD standpoint. [...]</description>
		<content:encoded><![CDATA[<p>[...] DDD &amp; Many to Many Object Relational Mapping &#8211; Udi Dahan takes a look at the complexities of Many To Many Mappings using ORM technology from an architectural / DDD standpoint. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: New and Notable 283 : Sam Gentile's Blog (if (DeveloperTask == Communication &#38;&#38; OS == Windows)</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-35962</link>
		<dc:creator>New and Notable 283 : Sam Gentile's Blog (if (DeveloperTask == Communication &#38;&#38; OS == Windows)</dc:creator>
		<pubDate>Sun, 25 Jan 2009 17:24:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-35962</guid>
		<description>[...] Udi on DDD &amp; Many to Many Object Relational Mapping [...]</description>
		<content:encoded><![CDATA[<p>[...] Udi on DDD &amp; Many to Many Object Relational Mapping [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tapio Kulmala</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-35961</link>
		<dc:creator>Tapio Kulmala</dc:creator>
		<pubDate>Sun, 25 Jan 2009 09:45:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-35961</guid>
		<description>If the Job entity has a meaning outside of the context of the Job Board, it&#039;s not part of the Job Board aggregate. A Job Board will have a reference to it but it does not make it part of the aggregate. 

Tapio</description>
		<content:encoded><![CDATA[<p>If the Job entity has a meaning outside of the context of the Job Board, it&#8217;s not part of the Job Board aggregate. A Job Board will have a reference to it but it does not make it part of the aggregate. </p>
<p>Tapio</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ayende Rahien</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-35958</link>
		<dc:creator>Ayende Rahien</dc:creator>
		<pubDate>Sat, 24 Jan 2009 20:34:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-35958</guid>
		<description>If I understand you correctly, Job Board is the aggregated root. But Job doesn&#039;t know about Job Board.

The problem with that is that now you have Job taking part in several aggregated roots. Doesn&#039;t this defeat the whole purpose of aggregated roots?</description>
		<content:encoded><![CDATA[<p>If I understand you correctly, Job Board is the aggregated root. But Job doesn&#8217;t know about Job Board.</p>
<p>The problem with that is that now you have Job taking part in several aggregated roots. Doesn&#8217;t this defeat the whole purpose of aggregated roots?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andy Palmer</title>
		<link>http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/comment-page-1/#comment-35957</link>
		<dc:creator>Andy Palmer</dc:creator>
		<pubDate>Sat, 24 Jan 2009 20:28:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.udidahan.com/2009/01/24/ddd-many-to-many-object-relational-mapping/#comment-35957</guid>
		<description>Another fantastic blog post, thanks Udi.</description>
		<content:encoded><![CDATA[<p>Another fantastic blog post, thanks Udi.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
