<?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: Need Advice: Teach NHibernate with Fluent NHibernate or Without?</title>
	<atom:link href="http://lostechies.com/chadmyers/2009/02/13/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without/feed/" rel="self" type="application/rss+xml" />
	<link>http://lostechies.com/chadmyers/2009/02/13/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without/</link>
	<description>Software development, testing, and techie life</description>
	<lastBuildDate>Thu, 08 Mar 2012 22:19: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: Kerry</title>
		<link>http://lostechies.com/chadmyers/2009/02/13/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without/#comment-905</link>
		<dc:creator>Kerry</dc:creator>
		<pubDate>Thu, 19 Feb 2009 18:16:32 +0000</pubDate>
		<guid isPermaLink="false">/blogs/chad_myers/archive/2009/02/12/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without.aspx#comment-905</guid>
		<description>Somewhat belated, sorry.   I&#039;m finally starting to learn the basics of nHibernate in the hopes that we&#039;ll be using it here in the near future.  Since I don&#039;t know where the company&#039;s decision will be, my choice is to learn NHibernate, then add Fluent NHibernate to it.  This way I&#039;ll have a better understanding of the underpinnings, regardless of the implementation the company ultimately uses.

Unless Fluent NHibernate is going to replace NHibernate, my vote is for at least a basic grounding in NHibernate, and a mention of the differences between the two.</description>
		<content:encoded><![CDATA[<p>Somewhat belated, sorry.   I&#8217;m finally starting to learn the basics of nHibernate in the hopes that we&#8217;ll be using it here in the near future.  Since I don&#8217;t know where the company&#8217;s decision will be, my choice is to learn NHibernate, then add Fluent NHibernate to it.  This way I&#8217;ll have a better understanding of the underpinnings, regardless of the implementation the company ultimately uses.</p>
<p>Unless Fluent NHibernate is going to replace NHibernate, my vote is for at least a basic grounding in NHibernate, and a mention of the differences between the two.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jon Kruger</title>
		<link>http://lostechies.com/chadmyers/2009/02/13/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without/#comment-904</link>
		<dc:creator>Jon Kruger</dc:creator>
		<pubDate>Wed, 18 Feb 2009 22:41:39 +0000</pubDate>
		<guid isPermaLink="false">/blogs/chad_myers/archive/2009/02/12/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without.aspx#comment-904</guid>
		<description>I&#039;ve used NHibernate for years.  NHibernate with .hbm.xml has a steep learning curve and Fluent NHibernate has a relatively small learning curve and it much easier to understand.   I don&#039;t see a point in teaching the .hbm.xml way other than mentioning that it&#039;s how to do NHibernate the &quot;old way&quot; and that under the hood it&#039;s using XML mapping files.

If you&#039;re trying to teach someone the .hbm.xml way, you would have to cover all kinds of things, like what all the mappings are, that the files have to be embedded resources, that assembly names have to be fully qualified, that you have to specify your unsaved value, how to generate Guid PKs, etc. -- all stuff  that you don&#039;t have to address in an intro to Fluent NHibernate.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve used NHibernate for years.  NHibernate with .hbm.xml has a steep learning curve and Fluent NHibernate has a relatively small learning curve and it much easier to understand.   I don&#8217;t see a point in teaching the .hbm.xml way other than mentioning that it&#8217;s how to do NHibernate the &#8220;old way&#8221; and that under the hood it&#8217;s using XML mapping files.</p>
<p>If you&#8217;re trying to teach someone the .hbm.xml way, you would have to cover all kinds of things, like what all the mappings are, that the files have to be embedded resources, that assembly names have to be fully qualified, that you have to specify your unsaved value, how to generate Guid PKs, etc. &#8212; all stuff  that you don&#8217;t have to address in an intro to Fluent NHibernate.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: MIke</title>
		<link>http://lostechies.com/chadmyers/2009/02/13/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without/#comment-903</link>
		<dc:creator>MIke</dc:creator>
		<pubDate>Sun, 15 Feb 2009 20:59:58 +0000</pubDate>
		<guid isPermaLink="false">/blogs/chad_myers/archive/2009/02/12/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without.aspx#comment-903</guid>
		<description>I&#039;d eliminate unnecessary dependencies. XML is easier to visually grasp how a single object is mapped than Expressions anyways IMO. </description>
		<content:encoded><![CDATA[<p>I&#8217;d eliminate unnecessary dependencies. XML is easier to visually grasp how a single object is mapped than Expressions anyways IMO. </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tobin Harris</title>
		<link>http://lostechies.com/chadmyers/2009/02/13/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without/#comment-902</link>
		<dc:creator>Tobin Harris</dc:creator>
		<pubDate>Sun, 15 Feb 2009 00:30:21 +0000</pubDate>
		<guid isPermaLink="false">/blogs/chad_myers/archive/2009/02/12/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without.aspx#comment-902</guid>
		<description>@chad,

Gotcha, didn&#039;t realize who your target audience was. 

Hmmm... I&#039;ve just left a shop that is moving from ADO.NET + Sprocs to NHibernate. Surprisingly I didn&#039;t really have to sell them NHibernate directly, I just used it on a project and it got them curious.

There were four things, I believe, that convinced them NHibernate was seriously worth considering.

1) It has community respect. When they read around, they see influential people praising NHibernate (mostly!). It&#039;s generally respected, trusted  and widely used. 

2) They noticed that I as adding DAL-related capabilities to our solution in very little time. Things like full text search, caching and switching to a different database platform were possible in minutes. They had just recently spent many man weeks adding these features manually to their code bases. 

3) At a big customer sales meeting, it turned out a competitor was leveraging the goodness of _H_ibernate in their enterprise product. This re-enforced the notion that NHibernate *might* be good for their solutions too.     

4) They had recently chosen to adopt Target Process for project managment, and realized that this great tool was built on NHibernate. They could see NHibernate being used successfully in the wild (after all, they paid good money for TP).  

Unfortunately only one of these factors is really code-related, so I don&#039;t know how useful that is to you. 

Back to mappings. I believe the devs grasp the concept of POCO -&gt; XML -&gt; Database quite well, it&#039;s a safe choice.      </description>
		<content:encoded><![CDATA[<p>@chad,</p>
<p>Gotcha, didn&#8217;t realize who your target audience was. </p>
<p>Hmmm&#8230; I&#8217;ve just left a shop that is moving from ADO.NET + Sprocs to NHibernate. Surprisingly I didn&#8217;t really have to sell them NHibernate directly, I just used it on a project and it got them curious.</p>
<p>There were four things, I believe, that convinced them NHibernate was seriously worth considering.</p>
<p>1) It has community respect. When they read around, they see influential people praising NHibernate (mostly!). It&#8217;s generally respected, trusted  and widely used. </p>
<p>2) They noticed that I as adding DAL-related capabilities to our solution in very little time. Things like full text search, caching and switching to a different database platform were possible in minutes. They had just recently spent many man weeks adding these features manually to their code bases. </p>
<p>3) At a big customer sales meeting, it turned out a competitor was leveraging the goodness of _H_ibernate in their enterprise product. This re-enforced the notion that NHibernate *might* be good for their solutions too.     </p>
<p>4) They had recently chosen to adopt Target Process for project managment, and realized that this great tool was built on NHibernate. They could see NHibernate being used successfully in the wild (after all, they paid good money for TP).  </p>
<p>Unfortunately only one of these factors is really code-related, so I don&#8217;t know how useful that is to you. </p>
<p>Back to mappings. I believe the devs grasp the concept of POCO -> XML -> Database quite well, it&#8217;s a safe choice.      </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Bohlen</title>
		<link>http://lostechies.com/chadmyers/2009/02/13/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without/#comment-901</link>
		<dc:creator>Steve Bohlen</dc:creator>
		<pubDate>Sat, 14 Feb 2009 23:46:33 +0000</pubDate>
		<guid isPermaLink="false">/blogs/chad_myers/archive/2009/02/12/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without.aspx#comment-901</guid>
		<description>Well, I will admit that &#039;stupid&#039; was perhaps too strong a word and I hereby retract it but I guess where I was coming from is that if your target audience isn&#039;t able to grok XML then they are quite likely IME to bump into the 1000 other things in NH that represent challenges to the level of dev that wouldn&#039;t be able handle the XML.

Not that there aren&#039;t bunches and bunches of these people out there, but I think that all I&#039;m really saying is much the same as some of the other commenters here: FNH is an abstraction over the behavior of NH mapping that the XML makes clear but that FNH can too easily IMHO make look like &#039;magic&#039; and if you don&#039;t take the time to understand what the abstraction is actually DOING for you, you will very quickly bump into its limitations.

I guess as with all abstractions it comes down to this: &quot;is the abstraction so leaky that most people using it will find themselves having to deal with the thing under the abstraction?&quot; and in the case of FNH it seems to me that pretty quickly its early-state limitations will come bubbling out at anyone trying to do &#039;real&#039; work with NH using JUST the FNH approach and they won&#039;t be properly equipped to deal with it because they will lack the foundational knowledge to know what&#039;s going on because they&#039;ve only been introduced to the abstraction.

I&#039;m guessing that with time FNH may indeed reach a maturity level where it can indeed be a whole-hog replacement for any use of XML mapping files (and I for one will rejoice on that day, even as someone who DOES understand the XML and appreciates its power and flexibility) but IMO that day just isn&#039;t here (yet).</description>
		<content:encoded><![CDATA[<p>Well, I will admit that &#8216;stupid&#8217; was perhaps too strong a word and I hereby retract it but I guess where I was coming from is that if your target audience isn&#8217;t able to grok XML then they are quite likely IME to bump into the 1000 other things in NH that represent challenges to the level of dev that wouldn&#8217;t be able handle the XML.</p>
<p>Not that there aren&#8217;t bunches and bunches of these people out there, but I think that all I&#8217;m really saying is much the same as some of the other commenters here: FNH is an abstraction over the behavior of NH mapping that the XML makes clear but that FNH can too easily IMHO make look like &#8216;magic&#8217; and if you don&#8217;t take the time to understand what the abstraction is actually DOING for you, you will very quickly bump into its limitations.</p>
<p>I guess as with all abstractions it comes down to this: &#8220;is the abstraction so leaky that most people using it will find themselves having to deal with the thing under the abstraction?&#8221; and in the case of FNH it seems to me that pretty quickly its early-state limitations will come bubbling out at anyone trying to do &#8216;real&#8217; work with NH using JUST the FNH approach and they won&#8217;t be properly equipped to deal with it because they will lack the foundational knowledge to know what&#8217;s going on because they&#8217;ve only been introduced to the abstraction.</p>
<p>I&#8217;m guessing that with time FNH may indeed reach a maturity level where it can indeed be a whole-hog replacement for any use of XML mapping files (and I for one will rejoice on that day, even as someone who DOES understand the XML and appreciates its power and flexibility) but IMO that day just isn&#8217;t here (yet).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: chadmyers</title>
		<link>http://lostechies.com/chadmyers/2009/02/13/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without/#comment-900</link>
		<dc:creator>chadmyers</dc:creator>
		<pubDate>Sat, 14 Feb 2009 17:05:26 +0000</pubDate>
		<guid isPermaLink="false">/blogs/chad_myers/archive/2009/02/12/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without.aspx#comment-900</guid>
		<description>@Steve:

I have never said that they&#039;re too stupid to do XML. I just think FNH has a less steep learning curve at first blush. It&#039;s a complicated problem and it&#039;s not quite that simple, but I do think that FNH is more approachable and involves less hassle than the XML. 

Already, now that I&#039;ve proceeded down the XML path, I&#039;m realizing what a pain it is and how many gotchas there are (i.e. &quot;oops, forgot about marking it as &#039;embedded resource&#039;! -- oops, I misspelled the file -- &quot;.hmb.xml&quot;, etc, etc, etc).  Not having the compiler kick you when you make a mistake can be a real drag when you&#039;re troubleshooting a stupid error like a typo in the file name.

That was my primary concern -- easing the transition.  I don&#039;t assume anyone is &quot;stupid&quot; except myself.</description>
		<content:encoded><![CDATA[<p>@Steve:</p>
<p>I have never said that they&#8217;re too stupid to do XML. I just think FNH has a less steep learning curve at first blush. It&#8217;s a complicated problem and it&#8217;s not quite that simple, but I do think that FNH is more approachable and involves less hassle than the XML. </p>
<p>Already, now that I&#8217;ve proceeded down the XML path, I&#8217;m realizing what a pain it is and how many gotchas there are (i.e. &#8220;oops, forgot about marking it as &#8216;embedded resource&#8217;! &#8212; oops, I misspelled the file &#8212; &#8220;.hmb.xml&#8221;, etc, etc, etc).  Not having the compiler kick you when you make a mistake can be a real drag when you&#8217;re troubleshooting a stupid error like a typo in the file name.</p>
<p>That was my primary concern &#8212; easing the transition.  I don&#8217;t assume anyone is &#8220;stupid&#8221; except myself.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Bohlen</title>
		<link>http://lostechies.com/chadmyers/2009/02/13/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without/#comment-899</link>
		<dc:creator>Steve Bohlen</dc:creator>
		<pubDate>Sat, 14 Feb 2009 16:55:12 +0000</pubDate>
		<guid isPermaLink="false">/blogs/chad_myers/archive/2009/02/12/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without.aspx#comment-899</guid>
		<description>While I love FNH&#039;s attempts to provide default &#039;convention-mapping&#039; as well as better support for refactoring tools, I feel strongly that teaching anyone anything about NH when the premise is that the audience is &quot;too stupid to read or compose XML files&quot; is a HUGE error.

If the concern is that a dev in the audience cannot grok XML then this is a class of dev that I would strongly argue is NOT a candidate for using NH at all -- with or without FNH.  If the dev is in this class, then the very next set of problems they will face are challenges with efficient query composition, the n+1 lazy loading issues, improper understanding of either the 1st or 2nd level caches, how UoW behaves, and more.

I am NOT debating the value of FNH (which I think is HIGH), but if its intent was &quot;to make NH approachable for the class of dev that cannot navigate XML&quot; then I think its largely doomed to short-term gain but long-term failure in that you will be able to attract a whole new class of user that will quickly conclude &quot;that NH performs terribly&quot; due to their lack of ability to understand how to configure and implement it efficiently.

Its not clear to me at all that there is a class of dev out there that is both a) frightened to death of XML and b) able to effectively use NH in a production app &quot;if only we could get the XML out of the process&quot;.  It may be that your experience in this regard is different from mine, but I haven&#039;t met these people in my own travels :)  As such, I think you should carefully consider the skills your audience has and from there determine if they are even candidates for using NH at all (with or without XML or FNH).</description>
		<content:encoded><![CDATA[<p>While I love FNH&#8217;s attempts to provide default &#8216;convention-mapping&#8217; as well as better support for refactoring tools, I feel strongly that teaching anyone anything about NH when the premise is that the audience is &#8220;too stupid to read or compose XML files&#8221; is a HUGE error.</p>
<p>If the concern is that a dev in the audience cannot grok XML then this is a class of dev that I would strongly argue is NOT a candidate for using NH at all &#8212; with or without FNH.  If the dev is in this class, then the very next set of problems they will face are challenges with efficient query composition, the n+1 lazy loading issues, improper understanding of either the 1st or 2nd level caches, how UoW behaves, and more.</p>
<p>I am NOT debating the value of FNH (which I think is HIGH), but if its intent was &#8220;to make NH approachable for the class of dev that cannot navigate XML&#8221; then I think its largely doomed to short-term gain but long-term failure in that you will be able to attract a whole new class of user that will quickly conclude &#8220;that NH performs terribly&#8221; due to their lack of ability to understand how to configure and implement it efficiently.</p>
<p>Its not clear to me at all that there is a class of dev out there that is both a) frightened to death of XML and b) able to effectively use NH in a production app &#8220;if only we could get the XML out of the process&#8221;.  It may be that your experience in this regard is different from mine, but I haven&#8217;t met these people in my own travels :)  As such, I think you should carefully consider the skills your audience has and from there determine if they are even candidates for using NH at all (with or without XML or FNH).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: chadmyers</title>
		<link>http://lostechies.com/chadmyers/2009/02/13/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without/#comment-898</link>
		<dc:creator>chadmyers</dc:creator>
		<pubDate>Sat, 14 Feb 2009 14:57:20 +0000</pubDate>
		<guid isPermaLink="false">/blogs/chad_myers/archive/2009/02/12/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without.aspx#comment-898</guid>
		<description>@cowgaR, Tobin:

Keep in mind, the audience here is likely people who are still rolling their own ADO.NET adapters for stored procedures and have no concept of ORM, let alone any idea to even LOOK for NHibernate in the first place.

This is a gradual introduction into the concept of, &quot;No, you don&#039;t have to write your own ADO.NET layer every project you&#039;re on&quot;

I need to gently coax them into letting go of their datareaders and datasets, etc.  Automapping would likely blow their mind.

Starting with Automapping is likely showing someone the &quot;COS&quot; button on a calculator without having taught them basic trigonometry first.</description>
		<content:encoded><![CDATA[<p>@cowgaR, Tobin:</p>
<p>Keep in mind, the audience here is likely people who are still rolling their own ADO.NET adapters for stored procedures and have no concept of ORM, let alone any idea to even LOOK for NHibernate in the first place.</p>
<p>This is a gradual introduction into the concept of, &#8220;No, you don&#8217;t have to write your own ADO.NET layer every project you&#8217;re on&#8221;</p>
<p>I need to gently coax them into letting go of their datareaders and datasets, etc.  Automapping would likely blow their mind.</p>
<p>Starting with Automapping is likely showing someone the &#8220;COS&#8221; button on a calculator without having taught them basic trigonometry first.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tobin Harris</title>
		<link>http://lostechies.com/chadmyers/2009/02/13/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without/#comment-897</link>
		<dc:creator>Tobin Harris</dc:creator>
		<pubDate>Sat, 14 Feb 2009 11:57:41 +0000</pubDate>
		<guid isPermaLink="false">/blogs/chad_myers/archive/2009/02/12/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without.aspx#comment-897</guid>
		<description>What about using just Auto Mappings? 

Just show off. Writing the model, then show how to map the whole lot in 2 lines of code with Auto Mappings :)

You could finish by demonstrating something  that goes beyond Auto Mapping capabilities. Do that using both .hbm AND Fluent, which would show they can be used side-by-side.







 </description>
		<content:encoded><![CDATA[<p>What about using just Auto Mappings? </p>
<p>Just show off. Writing the model, then show how to map the whole lot in 2 lines of code with Auto Mappings :)</p>
<p>You could finish by demonstrating something  that goes beyond Auto Mapping capabilities. Do that using both .hbm AND Fluent, which would show they can be used side-by-side.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: cowgaR</title>
		<link>http://lostechies.com/chadmyers/2009/02/13/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without/#comment-896</link>
		<dc:creator>cowgaR</dc:creator>
		<pubDate>Fri, 13 Feb 2009 22:11:04 +0000</pubDate>
		<guid isPermaLink="false">/blogs/chad_myers/archive/2009/02/12/need-advice-teach-nhibernate-with-fluent-nhibernate-or-without.aspx#comment-896</guid>
		<description>my take is different than the majority here...

what is the point of starting to teach NHibernate in the year 2009? there are (let me count) ok...there are _zillions_ of guides already avaiable not only on the net.

what the community miss is Fluent NHibernate + NHibernate tutorial and probably some alpha 2.1 LINQ stuff...that would digg deeply. With FNH your chapter 3 can look on generic repository pattern, whereas w/o it your chapter 25 will still only be entitles &quot;and now, mapping our product entity with xml files and inspecting more config options&quot; ;-)
e.g. more to the point guide, and btw, there are many HBML generators out there making teaching HBML deeply pointless...

if it is meant for &quot;learning&quot; you don&#039;t need advanced stuff anyway</description>
		<content:encoded><![CDATA[<p>my take is different than the majority here&#8230;</p>
<p>what is the point of starting to teach NHibernate in the year 2009? there are (let me count) ok&#8230;there are _zillions_ of guides already avaiable not only on the net.</p>
<p>what the community miss is Fluent NHibernate + NHibernate tutorial and probably some alpha 2.1 LINQ stuff&#8230;that would digg deeply. With FNH your chapter 3 can look on generic repository pattern, whereas w/o it your chapter 25 will still only be entitles &#8220;and now, mapping our product entity with xml files and inspecting more config options&#8221; ;-)<br />
e.g. more to the point guide, and btw, there are many HBML generators out there making teaching HBML deeply pointless&#8230;</p>
<p>if it is meant for &#8220;learning&#8221; you don&#8217;t need advanced stuff anyway</p>
]]></content:encoded>
	</item>
</channel>
</rss>
