<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://nhforge.org/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>NHibernate Documentation Structure Proposal</title><link>http://nhforge.org/wikis/reference2-0en/nhibernate-documentation-structure-proposal.aspx</link><description>Read reference documentation for a number of NHibernate 2.0 APIs. </description><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>NHibernate Documentation Structure Proposal</title><link>http://nhforge.org/wikis/reference2-0en/nhibernate-documentation-structure-proposal.aspx</link><pubDate>Wed, 08 Feb 2012 12:25:58 GMT</pubDate><guid isPermaLink="false">45f813f2-f1c4-4eda-a619-288e3cadc793:61</guid><dc:creator>abhishek644</dc:creator><comments>http://nhforge.org/wikis/reference2-0en/nhibernate-documentation-structure-proposal/comments.aspx</comments><description>Current revision posted to NHibernate 2.0  by abhishek644 on 08/02/2012 09:25:58 a.m.&lt;br /&gt;
&lt;h2&gt;NHibernate Documentation Structure Proposal&lt;/h2&gt;
&lt;div style="font-size: 90%;"&gt;Filed under: Nhibernate Documentation&lt;/div&gt;

&lt;p&gt;This is a proposal for a new structure of the NHibernate reference documentation. The goal is to discuss it and get some feedback from the community.&lt;/p&gt;
&lt;h2&gt;Goals&lt;/h2&gt;
&lt;p&gt;The goals of the restructuring of the documentation are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;move from &amp;quot;feature oriented&amp;quot; to &amp;quot;solution oriented&amp;quot;. For instance, instead of having a chapter about the &amp;quot;version&amp;quot; xml element, there is a chapter about &amp;quot;concurrency&amp;quot;. So the reader has a problem to solve, and he finds a chapter that explains, how NH solves it. The reader can&amp;#39;t know that he needs a version element. Such a chapter should cover all elements of a certain problem, in the given example this are the version xml-element, the optimistic-lock xml-attribute of classes and properties, explicit version increment, locking and so on.&lt;/li&gt;
&lt;li&gt;Additionally, there shall be a complete reference of the mappings, configurations and others in an appendix that links to the chapters.&lt;/li&gt;
&lt;li&gt;More diagrams for mapping strategies&lt;/li&gt;
&lt;li&gt;More best practices and patterns&lt;/li&gt;
&lt;li&gt;Fill gaps where the documentation is not complete (enough), for instance special HQL features, user types, interceptors and events, connection factories and other extensions, (new) proxy factories etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Structure&lt;/h2&gt;
&lt;h3&gt;Part 1: First Steps&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: a high-level overview of the whole picture.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Quick start&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;simple program that runs &amp;quot;out of the box&amp;quot;&lt;/li&gt;
&lt;li&gt;not too much code, not too much explanation (but links to chapters)&lt;/li&gt;
&lt;li&gt;includes inheritance, reference, list&lt;/li&gt;
&lt;li&gt;includes schema generation&lt;/li&gt;
&lt;li&gt;includes some simple hql&lt;/li&gt;
&lt;li&gt;includes configuration for sqlserver, oracle, mysql&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Architecture and basic concepts&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;Architecture (diagrams)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;quot;Factory-Chain&amp;quot; Configuration =&amp;gt; SessionFactory =&amp;gt; Session =&amp;gt; Transaction / Query &lt;/li&gt;
&lt;li&gt;&amp;nbsp;Instance States&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Session Cache (see also &amp;quot;Working with persistent objects&amp;quot;)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Application Architectures (referenced assemblies from application layers)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Setting Up&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Three ways: nhibernate.cfg.xml, app.config, programmatic&lt;/li&gt;
&lt;li&gt;Dialects and Drivers (See also Appendix &amp;quot;full list of Drivers / Dialects&amp;quot;)&lt;/li&gt;
&lt;li&gt;ProxyFactory configuration (see &amp;quot;lazy loading&amp;quot;)&lt;/li&gt;
&lt;li&gt;SessionProvider, contextual sessions&lt;/li&gt;
&lt;li&gt;Getting a connection (connection provider, user provided, connection release mode)&lt;/li&gt;
&lt;li&gt;How to set up a Project, minimal program
&lt;ul&gt;
&lt;li&gt;configuration file&lt;/li&gt;
&lt;li&gt;mapping files (see &amp;quot;OR Mapping Basics&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 2: Writing and Mapping Classes&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: Static view, classes, mappings, db schema&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Persistent classes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Example poco, basic rules&lt;/li&gt;
&lt;li&gt;Object Identity
&lt;ul&gt;
&lt;li&gt;id generators&lt;/li&gt;
&lt;li&gt;best practices&lt;/li&gt;
&lt;li&gt;composite keys (see also &amp;quot;Working with legacy databases&amp;quot;)&lt;/li&gt;
&lt;li&gt;component keys (see also &amp;quot;Working with legacy databases&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Overriding Equals and GetHashCode&lt;/li&gt;
&lt;li&gt;Optional: Version (see optimistic locking)&lt;/li&gt;
&lt;li&gt;lifecycle callbacks&lt;/li&gt;
&lt;li&gt;validation&lt;/li&gt;
&lt;li&gt;see also: lazy loading (because of virtual)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OR Mapping Basics&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage mapping files
&lt;ul&gt;
&lt;li&gt;as xml files&lt;/li&gt;
&lt;li&gt;as embedded resources&lt;/li&gt;
&lt;li&gt;modular mapping files&lt;/li&gt;
&lt;li&gt;alternatives (attributes, FNH)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Using quoted identifiers
&lt;ul&gt;
&lt;li&gt;NH Types (see also: &amp;quot;Extend NH behaviour - user types&amp;quot;, Appendix &amp;quot;Full List of Types&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Naming conventions&lt;/li&gt;
&lt;li&gt;Property / field (access strategy)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping primitive values and single ended references&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;properties&lt;/li&gt;
&lt;li&gt;references many-to-one&lt;/li&gt;
&lt;li&gt;references one-to-one&lt;/li&gt;
&lt;li&gt;map several classes to one table: components&lt;/li&gt;
&lt;li&gt;dynamic components&lt;/li&gt;
&lt;li&gt;map a class to several tables: join&lt;/li&gt;
&lt;li&gt;any types&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping Collections&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;persistent collections&lt;/li&gt;
&lt;li&gt;set, list, map, bag, array, primitive-array&lt;/li&gt;
&lt;li&gt;one-to-many relations&lt;/li&gt;
&lt;li&gt;many-to-many relations&lt;/li&gt;
&lt;li&gt;composite-elemements&lt;/li&gt;
&lt;li&gt;collection performance&lt;/li&gt;
&lt;li&gt;Sorted collections&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping Inheritance&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Table per Hierarchy&lt;/li&gt;
&lt;li&gt;Table per Concrete Class&lt;/li&gt;
&lt;li&gt;Table per Class&lt;/li&gt;
&lt;li&gt;Mixing strategies&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping to legacy databases&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;composite keys &lt;/li&gt;
&lt;li&gt;component keys&lt;/li&gt;
&lt;li&gt;property-ref&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Generating The Database &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The schema export tool&lt;/li&gt;
&lt;li&gt;not null&lt;/li&gt;
&lt;li&gt;foreign keys&lt;/li&gt;
&lt;li&gt;indexes&lt;/li&gt;
&lt;li&gt;unique keys&lt;/li&gt;
&lt;li&gt;Auxiliary Database Objects&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;mapping file generation from entity&lt;/p&gt;
&lt;h3&gt;Part 3: Working with Persistent Objects&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: Dynamic view, sessions, queries, modifications, transactions etc.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Working with sessions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sessions, session cache, flushing
&lt;/li&gt;
&lt;li&gt;cascading&lt;/li&gt;
&lt;li&gt;detached objects, reattaching&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Querying&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Introduction, when to use which kind of query&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;HQL Queries&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Syntax&lt;/li&gt;
&lt;li&gt;Multi Query&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Criteria Queries&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API&lt;/li&gt;
&lt;li&gt;Multi Criteria&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Using NH filters
&lt;/p&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;p&gt;Lazy loading and fetching strategies&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fetching strategies&lt;/li&gt;
&lt;li&gt;collections&lt;/li&gt;
&lt;li&gt;references (proxies)&lt;/li&gt;
&lt;li&gt;load&lt;/li&gt;
&lt;li&gt;Utility.Initialize&lt;/li&gt;
&lt;li&gt;batch fetching&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Updating and deleting&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;updating, batch-updates, HQL updates&lt;/li&gt;
&lt;li&gt;deleting, one-shot-delete, HQL delete&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Transactions And Concurrency&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transaction factory (see also: setting up)&lt;/li&gt;
&lt;li&gt;Concurrency
&lt;ul&gt;
&lt;li&gt;Optimistic Locking
&lt;ul&gt;
&lt;li&gt;Version columns&lt;/li&gt;
&lt;li&gt;Property level&lt;/li&gt;
&lt;li&gt;Force version increment&lt;/li&gt;
&lt;li&gt;application version check&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pessimistic Locking&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 4: Enhanced Features&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: Features that are not used by everyone. They are not important to understand to work with NH.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Using Native SQL&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sql queries&lt;/li&gt;
&lt;li&gt;custom SQL for query/update/insert/delete &lt;/li&gt;
&lt;li&gt;precompiled queries&lt;/li&gt;
&lt;li&gt;Using SP&amp;#39;s, db functions and triggers
&lt;ul&gt;
&lt;li&gt;property update/insert&lt;/li&gt;
&lt;li&gt;property generated&lt;/li&gt;
&lt;li&gt;property formula&lt;/li&gt;
&lt;li&gt;see also: &amp;quot;Generating The Database - Auxiliary Database Objects&amp;quot;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Using Database Views&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Caches&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;second level cache&lt;/li&gt;
&lt;li&gt;query cache&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Meta API&lt;br /&gt;&lt;br /&gt;Extend NH behaviour&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;user types&lt;/li&gt;
&lt;li&gt;Interceptors&lt;/li&gt;
&lt;li&gt;events&lt;/li&gt;
&lt;li&gt;connection provider&lt;/li&gt;
&lt;li&gt;transaction factory&lt;/li&gt;
&lt;li&gt;session provider&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 5: Examples&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: examples&lt;/i&gt;&lt;/p&gt;
&lt;h3&gt;Appendix&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: lists and references. The references (eg. mapping xml elements, dialects etc are important to find the documentation. So there are basically only links to chapters)&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Trouble shooting&lt;/p&gt;
&lt;p&gt;Configuration Reference&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Getting a connection (connection provider, user provided) (setting up)&lt;/li&gt;
&lt;li&gt;proxy generator (lazy loading)&lt;/li&gt;
&lt;li&gt;cache configuration (optimizing)&lt;/li&gt;
&lt;li&gt;Transaction factory (setting up)&lt;/li&gt;
&lt;li&gt;Dialects (setting up)&lt;/li&gt;
&lt;li&gt;Outer join fetching (lazy loading?)&lt;/li&gt;
&lt;li&gt;logging (trouble shooting)&lt;/li&gt;
&lt;li&gt;naming strategy (mapping)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Full List of Dialiects&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Full List of Drivers&lt;br /&gt;&lt;br /&gt;XML-Mapping full reference&lt;/p&gt;
&lt;p&gt;Full List of Type&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;[&lt;/span&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;http://ghrindustries.net/&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="background: SpringGreen;"&gt;On&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;the&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;other&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;hand&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;if&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;you&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;intend&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;to&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;produce&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;a&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;large&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;amount&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;of&lt;/span&gt; &lt;strong&gt;&lt;a href="http://ghrindustries.net/"&gt;Screen Printing Machine&lt;span style="text-decoration: line-through; color: red;"&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;&lt;span style="background: SpringGreen;"&gt;items&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;you&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;will&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;have&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;to&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;invest&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;in&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;the&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;industry&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;.&lt;/span&gt;&lt;/p&gt;</description></item><item><title>NHibernate Documentation Structure Proposal</title><link>http://nhforge.org/wikis/reference2-0en/nhibernate-documentation-structure-proposal/revision/9.aspx</link><pubDate>Wed, 08 Feb 2012 12:24:17 GMT</pubDate><guid isPermaLink="false">45f813f2-f1c4-4eda-a619-288e3cadc793:534</guid><dc:creator>abhishek644</dc:creator><comments>http://nhforge.org/wikis/reference2-0en/nhibernate-documentation-structure-proposal/comments.aspx</comments><description>Revision 9 posted to NHibernate 2.0  by abhishek644 on 08/02/2012 09:24:17 a.m.&lt;br /&gt;
&lt;h2&gt;NHibernate Documentation Structure Proposal&lt;/h2&gt;
&lt;div style="font-size: 90%;"&gt;Filed under: Nhibernate Documentation&lt;/div&gt;

&lt;p&gt;This is a proposal for a new structure of the NHibernate reference documentation. The goal is to discuss it and get some feedback from the community.&lt;/p&gt;
&lt;h2&gt;Goals&lt;/h2&gt;
&lt;p&gt;The goals of the restructuring of the documentation are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;move from &amp;quot;feature oriented&amp;quot; to &amp;quot;solution oriented&amp;quot;. For instance, instead of having a chapter about the &amp;quot;version&amp;quot; xml element, there is a chapter about &amp;quot;concurrency&amp;quot;. So the reader has a problem to solve, and he finds a chapter that explains, how NH solves it. The reader can&amp;#39;t know that he needs a version element. Such a chapter should cover all elements of a certain problem, in the given example this are the version xml-element, the optimistic-lock xml-attribute of classes and properties, explicit version increment, locking and so on.&lt;/li&gt;
&lt;li&gt;Additionally, there shall be a complete reference of the mappings, configurations and others in an appendix that links to the chapters.&lt;/li&gt;
&lt;li&gt;More diagrams for mapping strategies&lt;/li&gt;
&lt;li&gt;More best practices and patterns&lt;/li&gt;
&lt;li&gt;Fill gaps where the documentation is not complete (enough), for instance special HQL features, user types, interceptors and events, connection factories and other extensions, (new) proxy factories etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Structure&lt;/h2&gt;
&lt;h3&gt;Part 1: First Steps&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: a high-level overview of the whole picture.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Quick start&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;simple program that runs &amp;quot;out of the box&amp;quot;&lt;/li&gt;
&lt;li&gt;not too much code, not too much explanation (but links to chapters)&lt;/li&gt;
&lt;li&gt;includes inheritance, reference, list&lt;/li&gt;
&lt;li&gt;includes schema generation&lt;/li&gt;
&lt;li&gt;includes some simple hql&lt;/li&gt;
&lt;li&gt;includes configuration for sqlserver, oracle, mysql&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Architecture and basic concepts&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;Architecture (diagrams)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;quot;Factory-Chain&amp;quot; Configuration =&amp;gt; SessionFactory =&amp;gt; Session =&amp;gt; Transaction / Query &lt;/li&gt;
&lt;li&gt;&amp;nbsp;Instance States&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Session Cache (see also &amp;quot;Working with persistent objects&amp;quot;)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Application Architectures (referenced assemblies from application layers)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Setting Up&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Three ways: nhibernate.cfg.xml, app.config, programmatic&lt;/li&gt;
&lt;li&gt;Dialects and Drivers (See also Appendix &amp;quot;full list of Drivers / Dialects&amp;quot;)&lt;/li&gt;
&lt;li&gt;ProxyFactory configuration (see &amp;quot;lazy loading&amp;quot;)&lt;/li&gt;
&lt;li&gt;SessionProvider, contextual sessions&lt;/li&gt;
&lt;li&gt;Getting a connection (connection provider, user provided, connection release mode)&lt;/li&gt;
&lt;li&gt;How to set up a Project, minimal program
&lt;ul&gt;
&lt;li&gt;configuration file&lt;/li&gt;
&lt;li&gt;mapping files (see &amp;quot;OR Mapping Basics&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 2: Writing and Mapping Classes&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: Static view, classes, mappings, db schema&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Persistent classes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Example poco, basic rules&lt;/li&gt;
&lt;li&gt;Object Identity
&lt;ul&gt;
&lt;li&gt;id generators&lt;/li&gt;
&lt;li&gt;best practices&lt;/li&gt;
&lt;li&gt;composite keys (see also &amp;quot;Working with legacy databases&amp;quot;)&lt;/li&gt;
&lt;li&gt;component keys (see also &amp;quot;Working with legacy databases&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Overriding Equals and GetHashCode&lt;/li&gt;
&lt;li&gt;Optional: Version (see optimistic locking)&lt;/li&gt;
&lt;li&gt;lifecycle callbacks&lt;/li&gt;
&lt;li&gt;validation&lt;/li&gt;
&lt;li&gt;see also: lazy loading (because of virtual)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OR Mapping Basics&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage mapping files
&lt;ul&gt;
&lt;li&gt;as xml files&lt;/li&gt;
&lt;li&gt;as embedded resources&lt;/li&gt;
&lt;li&gt;modular mapping files&lt;/li&gt;
&lt;li&gt;alternatives (attributes, FNH)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Using quoted identifiers
&lt;ul&gt;
&lt;li&gt;NH Types (see also: &amp;quot;Extend NH behaviour - user types&amp;quot;, Appendix &amp;quot;Full List of Types&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Naming conventions&lt;/li&gt;
&lt;li&gt;Property / field (access strategy)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping primitive values and single ended references&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;properties&lt;/li&gt;
&lt;li&gt;references many-to-one&lt;/li&gt;
&lt;li&gt;references one-to-one&lt;/li&gt;
&lt;li&gt;map several classes to one table: components&lt;/li&gt;
&lt;li&gt;dynamic components&lt;/li&gt;
&lt;li&gt;map a class to several tables: join&lt;/li&gt;
&lt;li&gt;any types&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping Collections&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;persistent collections&lt;/li&gt;
&lt;li&gt;set, list, map, bag, array, primitive-array&lt;/li&gt;
&lt;li&gt;one-to-many relations&lt;/li&gt;
&lt;li&gt;many-to-many relations&lt;/li&gt;
&lt;li&gt;composite-elemements&lt;/li&gt;
&lt;li&gt;collection performance&lt;/li&gt;
&lt;li&gt;Sorted collections&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping Inheritance&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Table per Hierarchy&lt;/li&gt;
&lt;li&gt;Table per Concrete Class&lt;/li&gt;
&lt;li&gt;Table per Class&lt;/li&gt;
&lt;li&gt;Mixing strategies&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping to legacy databases&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;composite keys &lt;/li&gt;
&lt;li&gt;component keys&lt;/li&gt;
&lt;li&gt;property-ref&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Generating The Database &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The schema export tool&lt;/li&gt;
&lt;li&gt;not null&lt;/li&gt;
&lt;li&gt;foreign keys&lt;/li&gt;
&lt;li&gt;indexes&lt;/li&gt;
&lt;li&gt;unique keys&lt;/li&gt;
&lt;li&gt;Auxiliary Database Objects&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;mapping file generation from entity&lt;/p&gt;
&lt;h3&gt;Part 3: Working with Persistent Objects&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: Dynamic view, sessions, queries, modifications, transactions etc.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Working with sessions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sessions, session cache, flushing
&lt;/li&gt;
&lt;li&gt;cascading&lt;/li&gt;
&lt;li&gt;detached objects, reattaching&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Querying&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Introduction, when to use which kind of query&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;HQL Queries&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Syntax&lt;/li&gt;
&lt;li&gt;Multi Query&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Criteria Queries&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API&lt;/li&gt;
&lt;li&gt;Multi Criteria&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Using NH filters
&lt;/p&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;p&gt;Lazy loading and fetching strategies&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fetching strategies&lt;/li&gt;
&lt;li&gt;collections&lt;/li&gt;
&lt;li&gt;references (proxies)&lt;/li&gt;
&lt;li&gt;load&lt;/li&gt;
&lt;li&gt;Utility.Initialize&lt;/li&gt;
&lt;li&gt;batch fetching&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Updating and deleting&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;updating, batch-updates, HQL updates&lt;/li&gt;
&lt;li&gt;deleting, one-shot-delete, HQL delete&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Transactions And Concurrency&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transaction factory (see also: setting up)&lt;/li&gt;
&lt;li&gt;Concurrency
&lt;ul&gt;
&lt;li&gt;Optimistic Locking
&lt;ul&gt;
&lt;li&gt;Version columns&lt;/li&gt;
&lt;li&gt;Property level&lt;/li&gt;
&lt;li&gt;Force version increment&lt;/li&gt;
&lt;li&gt;application version check&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pessimistic Locking&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 4: Enhanced Features&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: Features that are not used by everyone. They are not important to understand to work with NH.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Using Native SQL&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sql queries&lt;/li&gt;
&lt;li&gt;custom SQL for query/update/insert/delete &lt;/li&gt;
&lt;li&gt;precompiled queries&lt;/li&gt;
&lt;li&gt;Using SP&amp;#39;s, db functions and triggers
&lt;ul&gt;
&lt;li&gt;property update/insert&lt;/li&gt;
&lt;li&gt;property generated&lt;/li&gt;
&lt;li&gt;property formula&lt;/li&gt;
&lt;li&gt;see also: &amp;quot;Generating The Database - Auxiliary Database Objects&amp;quot;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Using Database Views&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Caches&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;second level cache&lt;/li&gt;
&lt;li&gt;query cache&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Meta API&lt;br /&gt;&lt;br /&gt;Extend NH behaviour&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;user types&lt;/li&gt;
&lt;li&gt;Interceptors&lt;/li&gt;
&lt;li&gt;events&lt;/li&gt;
&lt;li&gt;connection provider&lt;/li&gt;
&lt;li&gt;transaction factory&lt;/li&gt;
&lt;li&gt;session provider&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 5: Examples&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: examples&lt;/i&gt;&lt;/p&gt;
&lt;h3&gt;Appendix&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: lists and references. The references (eg. mapping xml elements, dialects etc are important to find the documentation. So there are basically only links to chapters)&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Trouble shooting&lt;/p&gt;
&lt;p&gt;Configuration Reference&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Getting a connection (connection provider, user provided) (setting up)&lt;/li&gt;
&lt;li&gt;proxy generator (lazy loading)&lt;/li&gt;
&lt;li&gt;cache configuration (optimizing)&lt;/li&gt;
&lt;li&gt;Transaction factory (setting up)&lt;/li&gt;
&lt;li&gt;Dialects (setting up)&lt;/li&gt;
&lt;li&gt;Outer join fetching (lazy loading?)&lt;/li&gt;
&lt;li&gt;logging (trouble shooting)&lt;/li&gt;
&lt;li&gt;naming strategy (mapping)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Full List of Dialiects&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Full List of Drivers&lt;br /&gt;&lt;br /&gt;XML-Mapping full reference&lt;/p&gt;
&lt;p&gt;Full List of Type&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="background: SpringGreen;"&gt;[&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;http://ghrindustries.net/&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Screen&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Printing&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Machine&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;]&lt;/span&gt;&lt;/p&gt;</description></item><item><title>NHibernate Documentation Structure Proposal</title><link>http://nhforge.org/wikis/reference2-0en/nhibernate-documentation-structure-proposal/revision/8.aspx</link><pubDate>Wed, 16 Nov 2011 12:01:31 GMT</pubDate><guid isPermaLink="false">45f813f2-f1c4-4eda-a619-288e3cadc793:533</guid><dc:creator>John Davidson</dc:creator><comments>http://nhforge.org/wikis/reference2-0en/nhibernate-documentation-structure-proposal/comments.aspx</comments><description>Revision 8 posted to NHibernate 2.0  by John Davidson on 16/11/2011 09:01:31 a.m.&lt;br /&gt;
&lt;h2&gt;NHibernate Documentation Structure Proposal&lt;/h2&gt;
&lt;div style="font-size: 90%;"&gt;Filed under: Nhibernate Documentation&lt;/div&gt;

&lt;p&gt;This is a proposal for a new structure of the NHibernate reference documentation. The goal is to discuss it and get some feedback from the community.&lt;/p&gt;
&lt;h2&gt;Goals&lt;/h2&gt;
&lt;p&gt;The goals of the restructuring of the documentation are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;move from &amp;quot;feature oriented&amp;quot; to &amp;quot;solution oriented&amp;quot;. For instance, instead of having a chapter about the &amp;quot;version&amp;quot; xml element, there is a chapter about &amp;quot;concurrency&amp;quot;. So the reader has a problem to solve, and he finds a chapter that explains, how NH solves it. The reader can&amp;#39;t know that he needs a version element. Such a chapter should cover all elements of a certain problem, in the given example this are the version xml-element, the optimistic-lock xml-attribute of classes and properties, explicit version increment, locking and so on.&lt;/li&gt;
&lt;li&gt;Additionally, there shall be a complete reference of the mappings, configurations and others in an appendix that links to the chapters.&lt;/li&gt;
&lt;li&gt;More diagrams for mapping strategies&lt;/li&gt;
&lt;li&gt;More best practices and patterns&lt;/li&gt;
&lt;li&gt;Fill gaps where the documentation is not complete (enough), for instance special HQL features, user types, interceptors and events, connection factories and other extensions, (new) proxy factories etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Structure&lt;/h2&gt;
&lt;h3&gt;Part 1: First Steps&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: a high-level overview of the whole picture.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Quick start&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;simple program that runs &amp;quot;out of the box&amp;quot;&lt;/li&gt;
&lt;li&gt;not too much code, not too much explanation (but links to chapters)&lt;/li&gt;
&lt;li&gt;includes inheritance, reference, list&lt;/li&gt;
&lt;li&gt;includes schema generation&lt;/li&gt;
&lt;li&gt;includes some simple hql&lt;/li&gt;
&lt;li&gt;includes configuration for sqlserver, oracle, mysql&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Architecture and basic concepts&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;Architecture (diagrams)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;quot;Factory-Chain&amp;quot; Configuration =&amp;gt; SessionFactory =&amp;gt; Session =&amp;gt; Transaction / Query &lt;/li&gt;
&lt;li&gt;&amp;nbsp;Instance States&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Session Cache (see also &amp;quot;Working with persistent objects&amp;quot;)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Application Architectures (referenced assemblies from application layers)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Setting Up&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Three ways: nhibernate.cfg.xml, app.config, programmatic&lt;/li&gt;
&lt;li&gt;Dialects and Drivers (See also Appendix &amp;quot;full list of Drivers / Dialects&amp;quot;)&lt;/li&gt;
&lt;li&gt;ProxyFactory configuration (see &amp;quot;lazy loading&amp;quot;)&lt;/li&gt;
&lt;li&gt;SessionProvider, contextual sessions&lt;/li&gt;
&lt;li&gt;Getting a connection (connection provider, user provided, connection release mode)&lt;/li&gt;
&lt;li&gt;How to set up a Project, minimal program
&lt;ul&gt;
&lt;li&gt;configuration file&lt;/li&gt;
&lt;li&gt;mapping files (see &amp;quot;OR Mapping Basics&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 2: Writing and Mapping Classes&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: Static view, classes, mappings, db schema&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Persistent classes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Example poco, basic rules&lt;/li&gt;
&lt;li&gt;Object Identity
&lt;ul&gt;
&lt;li&gt;id generators&lt;/li&gt;
&lt;li&gt;best practices&lt;/li&gt;
&lt;li&gt;composite keys (see also &amp;quot;Working with legacy databases&amp;quot;)&lt;/li&gt;
&lt;li&gt;component keys (see also &amp;quot;Working with legacy databases&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Overriding Equals and GetHashCode&lt;/li&gt;
&lt;li&gt;Optional: Version (see optimistic locking)&lt;/li&gt;
&lt;li&gt;lifecycle callbacks&lt;/li&gt;
&lt;li&gt;validation&lt;/li&gt;
&lt;li&gt;see also: lazy loading (because of virtual)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OR Mapping Basics&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage mapping files
&lt;ul&gt;
&lt;li&gt;as xml files&lt;/li&gt;
&lt;li&gt;as embedded resources&lt;/li&gt;
&lt;li&gt;modular mapping files&lt;/li&gt;
&lt;li&gt;alternatives (attributes, FNH)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Using quoted identifiers
&lt;ul&gt;
&lt;li&gt;NH Types (see also: &amp;quot;Extend NH behaviour - user types&amp;quot;, Appendix &amp;quot;Full List of Types&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Naming conventions&lt;/li&gt;
&lt;li&gt;Property / field (access strategy)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping primitive values and single ended references&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;properties&lt;/li&gt;
&lt;li&gt;references many-to-one&lt;/li&gt;
&lt;li&gt;references one-to-one&lt;/li&gt;
&lt;li&gt;map several classes to one table: components&lt;/li&gt;
&lt;li&gt;dynamic components&lt;/li&gt;
&lt;li&gt;map a class to several tables: join&lt;/li&gt;
&lt;li&gt;any types&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping Collections&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;persistent collections&lt;/li&gt;
&lt;li&gt;set, list, map, bag, array, primitive-array&lt;/li&gt;
&lt;li&gt;one-to-many relations&lt;/li&gt;
&lt;li&gt;many-to-many relations&lt;/li&gt;
&lt;li&gt;composite-elemements&lt;/li&gt;
&lt;li&gt;collection performance&lt;/li&gt;
&lt;li&gt;Sorted collections&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping Inheritance&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Table per Hierarchy&lt;/li&gt;
&lt;li&gt;Table per Concrete Class&lt;/li&gt;
&lt;li&gt;Table per Class&lt;/li&gt;
&lt;li&gt;Mixing strategies&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping to legacy databases&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;composite keys &lt;/li&gt;
&lt;li&gt;component keys&lt;/li&gt;
&lt;li&gt;property-ref&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Generating The Database &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The schema export tool&lt;/li&gt;
&lt;li&gt;not null&lt;/li&gt;
&lt;li&gt;foreign keys&lt;/li&gt;
&lt;li&gt;indexes&lt;/li&gt;
&lt;li&gt;unique keys&lt;/li&gt;
&lt;li&gt;Auxiliary Database Objects&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;mapping file generation from entity&lt;/p&gt;
&lt;h3&gt;Part 3: Working with Persistent Objects&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: Dynamic view, sessions, queries, modifications, transactions etc.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Working with sessions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sessions, session cache, flushing
&lt;/li&gt;
&lt;li&gt;cascading&lt;/li&gt;
&lt;li&gt;detached objects, reattaching&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Querying&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Introduction, when to use which kind of query&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;HQL Queries&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Syntax&lt;/li&gt;
&lt;li&gt;Multi Query&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Criteria Queries&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API&lt;/li&gt;
&lt;li&gt;Multi Criteria&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Using NH filters
&lt;/p&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;p&gt;Lazy loading and fetching strategies&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fetching strategies&lt;/li&gt;
&lt;li&gt;collections&lt;/li&gt;
&lt;li&gt;references (proxies)&lt;/li&gt;
&lt;li&gt;load&lt;/li&gt;
&lt;li&gt;Utility.Initialize&lt;/li&gt;
&lt;li&gt;batch fetching&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Updating and deleting&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;updating, batch-updates, HQL updates&lt;/li&gt;
&lt;li&gt;deleting, one-shot-delete, HQL delete&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Transactions And Concurrency&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transaction factory (see also: setting up)&lt;/li&gt;
&lt;li&gt;Concurrency
&lt;ul&gt;
&lt;li&gt;Optimistic Locking
&lt;ul&gt;
&lt;li&gt;Version columns&lt;/li&gt;
&lt;li&gt;Property level&lt;/li&gt;
&lt;li&gt;Force version increment&lt;/li&gt;
&lt;li&gt;application version check&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pessimistic Locking&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 4: Enhanced Features&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: Features that are not used by everyone. They are not important to understand to work with NH.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Using Native SQL&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sql queries&lt;/li&gt;
&lt;li&gt;custom SQL for query/update/insert/delete &lt;/li&gt;
&lt;li&gt;precompiled queries&lt;/li&gt;
&lt;li&gt;Using SP&amp;#39;s, db functions and triggers
&lt;ul&gt;
&lt;li&gt;property update/insert&lt;/li&gt;
&lt;li&gt;property generated&lt;/li&gt;
&lt;li&gt;property formula&lt;/li&gt;
&lt;li&gt;see also: &amp;quot;Generating The Database - Auxiliary Database Objects&amp;quot;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Using Database Views&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Caches&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;second level cache&lt;/li&gt;
&lt;li&gt;query cache&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Meta API&lt;br /&gt;&lt;br /&gt;Extend NH behaviour&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;user types&lt;/li&gt;
&lt;li&gt;Interceptors&lt;/li&gt;
&lt;li&gt;events&lt;/li&gt;
&lt;li&gt;connection provider&lt;/li&gt;
&lt;li&gt;transaction factory&lt;/li&gt;
&lt;li&gt;session provider&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 5: Examples&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: examples&lt;/i&gt;&lt;/p&gt;
&lt;h3&gt;Appendix&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: lists and references. The references (eg. mapping xml elements, dialects etc are important to find the documentation. So there are basically only links to chapters)&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Trouble shooting&lt;/p&gt;
&lt;p&gt;Configuration Reference&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Getting a connection (connection provider, user provided) (setting up)&lt;/li&gt;
&lt;li&gt;proxy generator (lazy loading)&lt;/li&gt;
&lt;li&gt;cache configuration (optimizing)&lt;/li&gt;
&lt;li&gt;Transaction factory (setting up)&lt;/li&gt;
&lt;li&gt;Dialects (setting up)&lt;/li&gt;
&lt;li&gt;Outer join fetching (lazy loading?)&lt;/li&gt;
&lt;li&gt;logging (trouble shooting)&lt;/li&gt;
&lt;li&gt;naming strategy (mapping)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Full List of Dialiects&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Full List of Drivers&lt;br /&gt;&lt;br /&gt;XML-Mapping full reference&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Looking&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;for&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;the&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;best&lt;/span&gt; &amp;nbsp;&lt;a href="http://www.sims3cheat.com"&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Sims&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;3&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;cheats&lt;/span&gt;&lt;/a&gt;&amp;nbsp; &lt;span style="text-decoration: line-through; color: red;"&gt;PC?We&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;are&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;gonna&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;reveal&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;them&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;to&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;you&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;and&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;get&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;you&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;famous&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;on&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;Sims&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;3&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;and&lt;/span&gt; &amp;nbsp;&lt;a href="http://www.texttwist.cc/"&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Text&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;Twist&lt;/span&gt;&lt;/a&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Full List of &lt;span style="text-decoration: line-through; color: red;"&gt;Types&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://scrabbleicious.com/"&gt;&lt;strong&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;scrabble&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;word&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;finder&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;cheat&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;Type&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>NHibernate Documentation Structure Proposal</title><link>http://nhforge.org/wikis/reference2-0en/nhibernate-documentation-structure-proposal/revision/7.aspx</link><pubDate>Wed, 16 Nov 2011 11:50:19 GMT</pubDate><guid isPermaLink="false">45f813f2-f1c4-4eda-a619-288e3cadc793:526</guid><dc:creator>abhishek644</dc:creator><comments>http://nhforge.org/wikis/reference2-0en/nhibernate-documentation-structure-proposal/comments.aspx</comments><description>Revision 7 posted to NHibernate 2.0  by abhishek644 on 16/11/2011 08:50:19 a.m.&lt;br /&gt;
&lt;h2&gt;NHibernate Documentation Structure Proposal&lt;/h2&gt;
&lt;div style="font-size: 90%;"&gt;Filed under: Nhibernate Documentation&lt;/div&gt;

&lt;p&gt;This is a proposal for a new structure of the NHibernate reference documentation. The goal is to discuss it and get some feedback from the community.&lt;/p&gt;
&lt;h2&gt;Goals&lt;/h2&gt;
&lt;p&gt;The goals of the restructuring of the documentation are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;move from &amp;quot;feature oriented&amp;quot; to &amp;quot;solution oriented&amp;quot;. For instance, instead of having a chapter about the &amp;quot;version&amp;quot; xml element, there is a chapter about &amp;quot;concurrency&amp;quot;. So the reader has a problem to solve, and he finds a chapter that explains, how NH solves it. The reader can&amp;#39;t know that he needs a version element. Such a chapter should cover all elements of a certain problem, in the given example this are the version xml-element, the optimistic-lock xml-attribute of classes and properties, explicit version increment, locking and so on.&lt;/li&gt;
&lt;li&gt;Additionally, there shall be a complete reference of the mappings, configurations and others in an appendix that links to the chapters.&lt;/li&gt;
&lt;li&gt;More diagrams for mapping strategies&lt;/li&gt;
&lt;li&gt;More best practices and patterns&lt;/li&gt;
&lt;li&gt;Fill gaps where the documentation is not complete (enough), for instance special HQL features, user types, interceptors and events, connection factories and other extensions, (new) proxy factories etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Structure&lt;/h2&gt;
&lt;h3&gt;Part 1: First Steps&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: a high-level overview of the whole picture.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Quick start&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;simple program that runs &amp;quot;out of the box&amp;quot;&lt;/li&gt;
&lt;li&gt;not too much code, not too much explanation (but links to chapters)&lt;/li&gt;
&lt;li&gt;includes inheritance, reference, list&lt;/li&gt;
&lt;li&gt;includes schema generation&lt;/li&gt;
&lt;li&gt;includes some simple hql&lt;/li&gt;
&lt;li&gt;includes configuration for sqlserver, oracle, mysql&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Architecture and basic concepts&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;Architecture (diagrams)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;quot;Factory-Chain&amp;quot; Configuration =&amp;gt; SessionFactory =&amp;gt; Session =&amp;gt; Transaction / Query &lt;/li&gt;
&lt;li&gt;&amp;nbsp;Instance States&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Session Cache (see also &amp;quot;Working with persistent objects&amp;quot;)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Application Architectures (referenced assemblies from application layers)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Setting Up&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Three ways: nhibernate.cfg.xml, app.config, programmatic&lt;/li&gt;
&lt;li&gt;Dialects and Drivers (See also Appendix &amp;quot;full list of Drivers / Dialects&amp;quot;)&lt;/li&gt;
&lt;li&gt;ProxyFactory configuration (see &amp;quot;lazy loading&amp;quot;)&lt;/li&gt;
&lt;li&gt;SessionProvider, contextual sessions&lt;/li&gt;
&lt;li&gt;Getting a connection (connection provider, user provided, connection release mode)&lt;/li&gt;
&lt;li&gt;How to set up a Project, minimal program
&lt;ul&gt;
&lt;li&gt;configuration file&lt;/li&gt;
&lt;li&gt;mapping files (see &amp;quot;OR Mapping Basics&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 2: Writing and Mapping Classes&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: Static view, classes, mappings, db schema&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Persistent classes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Example poco, basic rules&lt;/li&gt;
&lt;li&gt;Object Identity
&lt;ul&gt;
&lt;li&gt;id generators&lt;/li&gt;
&lt;li&gt;best practices&lt;/li&gt;
&lt;li&gt;composite keys (see also &amp;quot;Working with legacy databases&amp;quot;)&lt;/li&gt;
&lt;li&gt;component keys (see also &amp;quot;Working with legacy databases&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Overriding Equals and GetHashCode&lt;/li&gt;
&lt;li&gt;Optional: Version (see optimistic locking)&lt;/li&gt;
&lt;li&gt;lifecycle callbacks&lt;/li&gt;
&lt;li&gt;validation&lt;/li&gt;
&lt;li&gt;see also: lazy loading (because of virtual)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OR Mapping Basics&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage mapping files
&lt;ul&gt;
&lt;li&gt;as xml files&lt;/li&gt;
&lt;li&gt;as embedded resources&lt;/li&gt;
&lt;li&gt;modular mapping files&lt;/li&gt;
&lt;li&gt;alternatives (attributes, FNH)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Using quoted identifiers
&lt;ul&gt;
&lt;li&gt;NH Types (see also: &amp;quot;Extend NH behaviour - user types&amp;quot;, Appendix &amp;quot;Full List of Types&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Naming conventions&lt;/li&gt;
&lt;li&gt;Property / field (access strategy)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping primitive values and single ended references&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;properties&lt;/li&gt;
&lt;li&gt;references many-to-one&lt;/li&gt;
&lt;li&gt;references one-to-one&lt;/li&gt;
&lt;li&gt;map several classes to one table: components&lt;/li&gt;
&lt;li&gt;dynamic components&lt;/li&gt;
&lt;li&gt;map a class to several tables: join&lt;/li&gt;
&lt;li&gt;any types&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping Collections&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;persistent collections&lt;/li&gt;
&lt;li&gt;set, list, map, bag, array, primitive-array&lt;/li&gt;
&lt;li&gt;one-to-many relations&lt;/li&gt;
&lt;li&gt;many-to-many relations&lt;/li&gt;
&lt;li&gt;composite-elemements&lt;/li&gt;
&lt;li&gt;collection performance&lt;/li&gt;
&lt;li&gt;Sorted collections&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping Inheritance&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Table per Hierarchy&lt;/li&gt;
&lt;li&gt;Table per Concrete Class&lt;/li&gt;
&lt;li&gt;Table per Class&lt;/li&gt;
&lt;li&gt;Mixing strategies&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping to legacy databases&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;composite keys &lt;/li&gt;
&lt;li&gt;component keys&lt;/li&gt;
&lt;li&gt;property-ref&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Generating The Database &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The schema export tool&lt;/li&gt;
&lt;li&gt;not null&lt;/li&gt;
&lt;li&gt;foreign keys&lt;/li&gt;
&lt;li&gt;indexes&lt;/li&gt;
&lt;li&gt;unique keys&lt;/li&gt;
&lt;li&gt;Auxiliary Database Objects&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;mapping file generation from entity&lt;/p&gt;
&lt;h3&gt;Part 3: Working with Persistent Objects&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: Dynamic view, sessions, queries, modifications, transactions etc.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Working with sessions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sessions, session cache, flushing
&lt;/li&gt;
&lt;li&gt;cascading&lt;/li&gt;
&lt;li&gt;detached objects, reattaching&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Querying&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Introduction, when to use which kind of query&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;HQL Queries&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Syntax&lt;/li&gt;
&lt;li&gt;Multi Query&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Criteria Queries&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API&lt;/li&gt;
&lt;li&gt;Multi Criteria&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Using NH filters
&lt;/p&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;p&gt;Lazy loading and fetching strategies&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fetching strategies&lt;/li&gt;
&lt;li&gt;collections&lt;/li&gt;
&lt;li&gt;references (proxies)&lt;/li&gt;
&lt;li&gt;load&lt;/li&gt;
&lt;li&gt;Utility.Initialize&lt;/li&gt;
&lt;li&gt;batch fetching&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Updating and deleting&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;updating, batch-updates, HQL updates&lt;/li&gt;
&lt;li&gt;deleting, one-shot-delete, HQL delete&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Transactions And Concurrency&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transaction factory (see also: setting up)&lt;/li&gt;
&lt;li&gt;Concurrency
&lt;ul&gt;
&lt;li&gt;Optimistic Locking
&lt;ul&gt;
&lt;li&gt;Version columns&lt;/li&gt;
&lt;li&gt;Property level&lt;/li&gt;
&lt;li&gt;Force version increment&lt;/li&gt;
&lt;li&gt;application version check&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pessimistic Locking&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 4: Enhanced Features&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: Features that are not used by everyone. They are not important to understand to work with NH.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Using Native SQL&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sql queries&lt;/li&gt;
&lt;li&gt;custom SQL for query/update/insert/delete &lt;/li&gt;
&lt;li&gt;precompiled queries&lt;/li&gt;
&lt;li&gt;Using SP&amp;#39;s, db functions and triggers
&lt;ul&gt;
&lt;li&gt;property update/insert&lt;/li&gt;
&lt;li&gt;property generated&lt;/li&gt;
&lt;li&gt;property formula&lt;/li&gt;
&lt;li&gt;see also: &amp;quot;Generating The Database - Auxiliary Database Objects&amp;quot;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Using Database Views&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Caches&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;second level cache&lt;/li&gt;
&lt;li&gt;query cache&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Meta API&lt;br /&gt;&lt;br /&gt;Extend NH behaviour&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;user types&lt;/li&gt;
&lt;li&gt;Interceptors&lt;/li&gt;
&lt;li&gt;events&lt;/li&gt;
&lt;li&gt;connection provider&lt;/li&gt;
&lt;li&gt;transaction factory&lt;/li&gt;
&lt;li&gt;session provider&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 5: Examples&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: examples&lt;/i&gt;&lt;/p&gt;
&lt;h3&gt;Appendix&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: lists and references. The references (eg. mapping xml elements, dialects etc are important to find the documentation. So there are basically only links to chapters)&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Trouble shooting&lt;/p&gt;
&lt;p&gt;Configuration Reference&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Getting a connection (connection provider, user provided) (setting up)&lt;/li&gt;
&lt;li&gt;proxy generator (lazy loading)&lt;/li&gt;
&lt;li&gt;cache configuration (optimizing)&lt;/li&gt;
&lt;li&gt;Transaction factory (setting up)&lt;/li&gt;
&lt;li&gt;Dialects (setting up)&lt;/li&gt;
&lt;li&gt;Outer join fetching (lazy loading?)&lt;/li&gt;
&lt;li&gt;logging (trouble shooting)&lt;/li&gt;
&lt;li&gt;naming strategy (mapping)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Full List of Dialiects&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Full List of Drivers&lt;br /&gt;&lt;br /&gt;XML-Mapping full reference&lt;/p&gt;
&lt;p&gt;&lt;span style="background: SpringGreen;"&gt;Looking&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;for&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;the&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;best&lt;/span&gt; &amp;nbsp;&lt;a href="http://www.sims3cheat.com"&gt;&lt;span style="background: SpringGreen;"&gt;Sims&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;3&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;cheats&lt;/span&gt;&lt;/a&gt;&amp;nbsp; &lt;span style="background: SpringGreen;"&gt;PC?We&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;are&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;gonna&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;reveal&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;them&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;to&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;you&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;and&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;get&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;you&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;famous&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;on&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Sims&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;3&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;and&lt;/span&gt; &amp;nbsp;&lt;a href="http://www.texttwist.cc/"&gt;&lt;span style="background: SpringGreen;"&gt;Text&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Twist&lt;/span&gt;&lt;/a&gt;&lt;span style="background: SpringGreen;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Full List of Types&lt;/p&gt;
&lt;p&gt;&lt;a href="http://scrabbleicious.com/"&gt;&lt;strong&gt;scrabble word finder cheat&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>NHibernate Documentation Structure Proposal</title><link>http://nhforge.org/wikis/reference2-0en/nhibernate-documentation-structure-proposal/revision/6.aspx</link><pubDate>Thu, 10 Nov 2011 11:34:10 GMT</pubDate><guid isPermaLink="false">45f813f2-f1c4-4eda-a619-288e3cadc793:525</guid><dc:creator>abhishek644</dc:creator><comments>http://nhforge.org/wikis/reference2-0en/nhibernate-documentation-structure-proposal/comments.aspx</comments><description>Revision 6 posted to NHibernate 2.0  by abhishek644 on 10/11/2011 08:34:10 a.m.&lt;br /&gt;
&lt;h2&gt;NHibernate Documentation Structure Proposal&lt;/h2&gt;
&lt;div style="font-size: 90%;"&gt;Filed under: Nhibernate Documentation&lt;/div&gt;

&lt;p&gt;This is a proposal for a new structure of the NHibernate reference documentation. The goal is to discuss it and get some feedback from the community.&lt;/p&gt;
&lt;h2&gt;Goals&lt;/h2&gt;
&lt;p&gt;The goals of the restructuring of the documentation are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;move from &amp;quot;feature oriented&amp;quot; to &amp;quot;solution oriented&amp;quot;. For instance, instead of having a chapter about the &amp;quot;version&amp;quot; xml element, there is a chapter about &amp;quot;concurrency&amp;quot;. So the reader has a problem to solve, and he finds a chapter that explains, how NH solves it. The reader can&amp;#39;t know that he needs a version element. Such a chapter should cover all elements of a certain problem, in the given example this are the version xml-element, the optimistic-lock xml-attribute of classes and properties, explicit version increment, locking and so on.&lt;/li&gt;
&lt;li&gt;Additionally, there shall be a complete reference of the mappings, configurations and others in an appendix that links to the chapters.&lt;/li&gt;
&lt;li&gt;More diagrams for mapping strategies&lt;/li&gt;
&lt;li&gt;More best practices and patterns&lt;/li&gt;
&lt;li&gt;Fill gaps where the documentation is not complete (enough), for instance special HQL features, user types, interceptors and events, connection factories and other extensions, (new) proxy factories etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Structure&lt;/h2&gt;
&lt;h3&gt;Part 1: First Steps&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: a high-level overview of the whole picture.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Quick start&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;simple program that runs &amp;quot;out of the box&amp;quot;&lt;/li&gt;
&lt;li&gt;not too much code, not too much explanation (but links to chapters)&lt;/li&gt;
&lt;li&gt;includes inheritance, reference, list&lt;/li&gt;
&lt;li&gt;includes schema generation&lt;/li&gt;
&lt;li&gt;includes some simple hql&lt;/li&gt;
&lt;li&gt;includes configuration for sqlserver, oracle, mysql&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Architecture and basic concepts&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;Architecture (diagrams)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;quot;Factory-Chain&amp;quot; Configuration =&amp;gt; SessionFactory =&amp;gt; Session =&amp;gt; Transaction / Query &lt;/li&gt;
&lt;li&gt;&amp;nbsp;Instance States&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Session Cache (see also &amp;quot;Working with persistent objects&amp;quot;)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Application Architectures (referenced assemblies from application layers)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Setting Up&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Three ways: nhibernate.cfg.xml, app.config, programmatic&lt;/li&gt;
&lt;li&gt;Dialects and Drivers (See also Appendix &amp;quot;full list of Drivers / Dialects&amp;quot;)&lt;/li&gt;
&lt;li&gt;ProxyFactory configuration (see &amp;quot;lazy loading&amp;quot;)&lt;/li&gt;
&lt;li&gt;SessionProvider, contextual sessions&lt;/li&gt;
&lt;li&gt;Getting a connection (connection provider, user provided, connection release mode)&lt;/li&gt;
&lt;li&gt;How to set up a Project, minimal program
&lt;ul&gt;
&lt;li&gt;configuration file&lt;/li&gt;
&lt;li&gt;mapping files (see &amp;quot;OR Mapping Basics&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 2: Writing and Mapping Classes&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: Static view, classes, mappings, db schema&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Persistent classes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Example poco, basic rules&lt;/li&gt;
&lt;li&gt;Object Identity
&lt;ul&gt;
&lt;li&gt;id generators&lt;/li&gt;
&lt;li&gt;best practices&lt;/li&gt;
&lt;li&gt;composite keys (see also &amp;quot;Working with legacy databases&amp;quot;)&lt;/li&gt;
&lt;li&gt;component keys (see also &amp;quot;Working with legacy databases&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Overriding Equals and GetHashCode&lt;/li&gt;
&lt;li&gt;Optional: Version (see optimistic locking)&lt;/li&gt;
&lt;li&gt;lifecycle callbacks&lt;/li&gt;
&lt;li&gt;validation&lt;/li&gt;
&lt;li&gt;see also: lazy loading (because of virtual)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OR Mapping Basics&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage mapping files
&lt;ul&gt;
&lt;li&gt;as xml files&lt;/li&gt;
&lt;li&gt;as embedded resources&lt;/li&gt;
&lt;li&gt;modular mapping files&lt;/li&gt;
&lt;li&gt;alternatives (attributes, FNH)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Using quoted identifiers
&lt;ul&gt;
&lt;li&gt;NH Types (see also: &amp;quot;Extend NH behaviour - user types&amp;quot;, Appendix &amp;quot;Full List of Types&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Naming conventions&lt;/li&gt;
&lt;li&gt;Property / field (access strategy)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping primitive values and single ended references&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;properties&lt;/li&gt;
&lt;li&gt;references many-to-one&lt;/li&gt;
&lt;li&gt;references one-to-one&lt;/li&gt;
&lt;li&gt;map several classes to one table: components&lt;/li&gt;
&lt;li&gt;dynamic components&lt;/li&gt;
&lt;li&gt;map a class to several tables: join&lt;/li&gt;
&lt;li&gt;any types&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping Collections&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;persistent collections&lt;/li&gt;
&lt;li&gt;set, list, map, bag, array, primitive-array&lt;/li&gt;
&lt;li&gt;one-to-many relations&lt;/li&gt;
&lt;li&gt;many-to-many relations&lt;/li&gt;
&lt;li&gt;composite-elemements&lt;/li&gt;
&lt;li&gt;collection performance&lt;/li&gt;
&lt;li&gt;Sorted collections&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping Inheritance&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Table per Hierarchy&lt;/li&gt;
&lt;li&gt;Table per Concrete Class&lt;/li&gt;
&lt;li&gt;Table per Class&lt;/li&gt;
&lt;li&gt;Mixing strategies&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping to legacy databases&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;composite keys &lt;/li&gt;
&lt;li&gt;component keys&lt;/li&gt;
&lt;li&gt;property-ref&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Generating The Database &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The schema export tool&lt;/li&gt;
&lt;li&gt;not null&lt;/li&gt;
&lt;li&gt;foreign keys&lt;/li&gt;
&lt;li&gt;indexes&lt;/li&gt;
&lt;li&gt;unique keys&lt;/li&gt;
&lt;li&gt;Auxiliary Database Objects&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;mapping file generation from entity&lt;/p&gt;
&lt;h3&gt;Part 3: Working with Persistent Objects&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: Dynamic view, sessions, queries, modifications, transactions etc.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Working with sessions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sessions, session cache, flushing
&lt;/li&gt;
&lt;li&gt;cascading&lt;/li&gt;
&lt;li&gt;detached objects, reattaching&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Querying&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Introduction, when to use which kind of query&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;HQL Queries&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Syntax&lt;/li&gt;
&lt;li&gt;Multi Query&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Criteria Queries&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API&lt;/li&gt;
&lt;li&gt;Multi Criteria&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Using NH filters
&lt;/p&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;p&gt;Lazy loading and fetching strategies&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fetching strategies&lt;/li&gt;
&lt;li&gt;collections&lt;/li&gt;
&lt;li&gt;references (proxies)&lt;/li&gt;
&lt;li&gt;load&lt;/li&gt;
&lt;li&gt;Utility.Initialize&lt;/li&gt;
&lt;li&gt;batch fetching&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Updating and deleting&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;updating, batch-updates, HQL updates&lt;/li&gt;
&lt;li&gt;deleting, one-shot-delete, HQL delete&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Transactions And Concurrency&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transaction factory (see also: setting up)&lt;/li&gt;
&lt;li&gt;Concurrency
&lt;ul&gt;
&lt;li&gt;Optimistic Locking
&lt;ul&gt;
&lt;li&gt;Version columns&lt;/li&gt;
&lt;li&gt;Property level&lt;/li&gt;
&lt;li&gt;Force version increment&lt;/li&gt;
&lt;li&gt;application version check&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pessimistic Locking&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 4: Enhanced Features&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: Features that are not used by everyone. They are not important to understand to work with NH.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Using Native SQL&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sql queries&lt;/li&gt;
&lt;li&gt;custom SQL for query/update/insert/delete &lt;/li&gt;
&lt;li&gt;precompiled queries&lt;/li&gt;
&lt;li&gt;Using SP&amp;#39;s, db functions and triggers
&lt;ul&gt;
&lt;li&gt;property update/insert&lt;/li&gt;
&lt;li&gt;property generated&lt;/li&gt;
&lt;li&gt;property formula&lt;/li&gt;
&lt;li&gt;see also: &amp;quot;Generating The Database - Auxiliary Database Objects&amp;quot;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Using Database Views&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Caches&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;second level cache&lt;/li&gt;
&lt;li&gt;query cache&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Meta API&lt;br /&gt;&lt;br /&gt;Extend NH behaviour&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;user types&lt;/li&gt;
&lt;li&gt;Interceptors&lt;/li&gt;
&lt;li&gt;events&lt;/li&gt;
&lt;li&gt;connection provider&lt;/li&gt;
&lt;li&gt;transaction factory&lt;/li&gt;
&lt;li&gt;session provider&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 5: Examples&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: examples&lt;/i&gt;&lt;/p&gt;
&lt;h3&gt;Appendix&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: lists and references. The references (eg. mapping xml elements, dialects etc are important to find the documentation. So there are basically only links to chapters)&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Trouble shooting&lt;/p&gt;
&lt;p&gt;Configuration Reference&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Getting a connection (connection provider, user provided) (setting up)&lt;/li&gt;
&lt;li&gt;proxy generator (lazy loading)&lt;/li&gt;
&lt;li&gt;cache configuration (optimizing)&lt;/li&gt;
&lt;li&gt;Transaction factory (setting up)&lt;/li&gt;
&lt;li&gt;Dialects (setting up)&lt;/li&gt;
&lt;li&gt;Outer join fetching (lazy loading?)&lt;/li&gt;
&lt;li&gt;logging (trouble shooting)&lt;/li&gt;
&lt;li&gt;naming strategy (mapping)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Full List of Dialiects&lt;br /&gt;&lt;br /&gt;Full List of Drivers&lt;br /&gt;&lt;br /&gt;XML-Mapping full reference&lt;br /&gt;&lt;br /&gt;Full List of Types&lt;/p&gt;
&lt;p&gt;&lt;a href="http://scrabbleicious.com/"&gt;&lt;b&gt;&lt;span style="background: SpringGreen;"&gt;scrabble&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;word&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;finder&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;cheat&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>NHibernate Documentation Structure Proposal</title><link>http://nhforge.org/wikis/reference2-0en/nhibernate-documentation-structure-proposal/revision/5.aspx</link><pubDate>Tue, 02 Jun 2009 18:47:32 GMT</pubDate><guid isPermaLink="false">45f813f2-f1c4-4eda-a619-288e3cadc793:524</guid><dc:creator>Simon Martin</dc:creator><comments>http://nhforge.org/wikis/reference2-0en/nhibernate-documentation-structure-proposal/comments.aspx</comments><description>Revision 5 posted to NHibernate 2.0  by Simon Martin on 02/06/2009 03:47:32 p.m.&lt;br /&gt;
&lt;h2&gt;NHibernate Documentation Structure Proposal&lt;/h2&gt;
&lt;div style="font-size: 90%;"&gt;Filed under: Nhibernate Documentation&lt;/div&gt;

&lt;p&gt;This is a proposal for a new structure of the NHibernate reference documentation. The goal is to discuss it and get some feedback from the community.&lt;/p&gt;
&lt;h2&gt;Goals&lt;br /&gt;&lt;/h2&gt;
&lt;p&gt;The goals of the restructuring of the documentation are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;move from &amp;quot;feature oriented&amp;quot; to &amp;quot;solution oriented&amp;quot;. For instance, instead of &lt;span style="text-decoration: line-through; color: red;"&gt;habing&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;having&lt;/span&gt; a chapter about the &amp;quot;version&amp;quot; xml element, there is a chapter about &amp;quot;concurrency&amp;quot;. So the reader has a problem to solve, and he finds a chapter that explains, how NH solves it. The reader can&amp;#39;t know that he needs a version element. Such a chapter should cover all elements of a certain problem, in the given example this are the version xml-element, the optimistic-lock xml-attribute of classes and properties, explicit version increment, locking and so on.&lt;/li&gt;
&lt;li&gt;Additionally, there shall be a complete reference of the mappings, configurations and others in an appendix that links to the chapters.&lt;/li&gt;
&lt;li&gt;More diagrams for mapping strategies&lt;/li&gt;
&lt;li&gt;More best practices and patterns&lt;/li&gt;
&lt;li&gt;Fill gaps where the documentation is not complete (enough), for instance special HQL features, user types, interceptors and events, connection factories and other extensions, (new) proxy factories etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Structure&lt;/h2&gt;
&lt;h3&gt;Part 1: First Steps&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: a high-level overview of the whole picture.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Quick start&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;simple program that runs &amp;quot;out of the box&amp;quot;&lt;/li&gt;
&lt;li&gt;not too much code, not too much explanation (but links to chapters)&lt;/li&gt;
&lt;li&gt;includes inheritance, reference, list&lt;/li&gt;
&lt;li&gt;includes schema generation&lt;/li&gt;
&lt;li&gt;includes some simple hql&lt;/li&gt;
&lt;li&gt;includes configuration for sqlserver, &lt;span style="text-decoration: line-through; color: red;"&gt;orcale&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;oracle&lt;/span&gt;, mysql&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Architecture and basic concepts&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;Architecture (diagrams)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;quot;Factory-Chain&amp;quot; Configuration =&amp;gt; SessionFactory =&amp;gt; Session =&amp;gt; Transaction / Query &lt;/li&gt;
&lt;li&gt;&amp;nbsp;Instance States&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Session Cache (see also &amp;quot;Working with persistent objects&amp;quot;)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Application Architectures (referenced assemblies from application layers)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Setting Up&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Three ways: nhibernate.cfg.xml, app.config, programmatic&lt;/li&gt;
&lt;li&gt;Dialects and Drivers (See also Appendix &amp;quot;full list of Drivers / Dialects&amp;quot;)&lt;/li&gt;
&lt;li&gt;ProxyFactory configuration (see &amp;quot;lazy loading&amp;quot;)&lt;/li&gt;
&lt;li&gt;SessionProvider, contextual sessions&lt;/li&gt;
&lt;li&gt;Getting a connection (connection provider, user provided, connection release mode)&lt;/li&gt;
&lt;li&gt;How to set up a Project, minimal program
&lt;ul&gt;
&lt;li&gt;configuration file&lt;/li&gt;
&lt;li&gt;mapping files (see &amp;quot;OR Mapping Basics&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 2: Writing and Mapping Classes&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: Static view, classes, mappings, db schema&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Persistent classes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Example poco, basic rules&lt;/li&gt;
&lt;li&gt;Object Identity
&lt;ul&gt;
&lt;li&gt;id generators&lt;/li&gt;
&lt;li&gt;best practices&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;compsite&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;composite&lt;/span&gt; keys (see also &amp;quot;Working with legacy databases&amp;quot;)&lt;/li&gt;
&lt;li&gt;component keys (see also &amp;quot;Working with legacy databases&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Overriding Equals and GetHashCode&lt;/li&gt;
&lt;li&gt;Optional: Version (see optimistic locking)&lt;/li&gt;
&lt;li&gt;lifecycle callbacks&lt;/li&gt;
&lt;li&gt;validation&lt;/li&gt;
&lt;li&gt;see also: lazy loading (because of virtual)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OR Mapping Basics&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage mapping files
&lt;ul&gt;
&lt;li&gt;as xml files&lt;/li&gt;
&lt;li&gt;as embedded resources&lt;/li&gt;
&lt;li&gt;modular mapping files&lt;/li&gt;
&lt;li&gt;alternatives (attributes, FNH)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Using quoted identifiers
&lt;ul&gt;
&lt;li&gt;NH Types (see also: &amp;quot;Extend NH behaviour - user types&amp;quot;, Appendix &amp;quot;Full List of Types&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Naming conventions&lt;/li&gt;
&lt;li&gt;Property / field (access strategy)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping primitive values and single ended references&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;properties&lt;/li&gt;
&lt;li&gt;references many-to-one&lt;/li&gt;
&lt;li&gt;references one-to-one&lt;/li&gt;
&lt;li&gt;map several classes to one table: components&lt;/li&gt;
&lt;li&gt;dynamic components&lt;/li&gt;
&lt;li&gt;map a class to several tables: join&lt;/li&gt;
&lt;li&gt;any types&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping Collections&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;persistent collections&lt;/li&gt;
&lt;li&gt;set, list, map, bag, array, primitive-array&lt;/li&gt;
&lt;li&gt;one-to-many relations&lt;/li&gt;
&lt;li&gt;many-to-many relations&lt;/li&gt;
&lt;li&gt;composite-elemements&lt;/li&gt;
&lt;li&gt;collection performance&lt;/li&gt;
&lt;li&gt;Sorted collections&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping Inheritance&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Table per Hierarchy&lt;/li&gt;
&lt;li&gt;Table per Concrete Class&lt;/li&gt;
&lt;li&gt;Table per Class&lt;/li&gt;
&lt;li&gt;Mixing strategies&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping to legacy databases&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;composite keys &lt;/li&gt;
&lt;li&gt;component keys&lt;/li&gt;
&lt;li&gt;property-ref&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Generating The Database &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The schema export tool&lt;/li&gt;
&lt;li&gt;not null&lt;/li&gt;
&lt;li&gt;foreign keys&lt;/li&gt;
&lt;li&gt;indexes&lt;/li&gt;
&lt;li&gt;unique keys&lt;/li&gt;
&lt;li&gt;Auxiliary Database Objects&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;mapping file generation from entity&lt;/p&gt;
&lt;h3&gt;Part 3: Working with Persistent Objects&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: Dynamic view, sessions, queries, modifications, transactions etc.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Working with sessions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sessions, session cache, flushing
&lt;/li&gt;
&lt;li&gt;cascading&lt;/li&gt;
&lt;li&gt;detached objects, reattaching&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Querying&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Introduction, when to use which kind of query&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;HQL Queries&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Syntax&lt;/li&gt;
&lt;li&gt;Multi Query&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Criteria Queries&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API&lt;/li&gt;
&lt;li&gt;Multi Criteria&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Using NH filters
&lt;/p&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;p&gt;Lazy loading and fetching strategies&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fetching strategies&lt;/li&gt;
&lt;li&gt;collections&lt;/li&gt;
&lt;li&gt;references (proxies)&lt;/li&gt;
&lt;li&gt;load&lt;/li&gt;
&lt;li&gt;Utility.Initialize&lt;/li&gt;
&lt;li&gt;batch fetching&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Updating and deleting&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;updating, batch-updates, HQL updates&lt;/li&gt;
&lt;li&gt;deleting, one-shot-delete, HQL delete&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Transactions And Concurrency&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transaction factory (see also: setting up)&lt;/li&gt;
&lt;li&gt;Concurrency
&lt;ul&gt;
&lt;li&gt;Optimistic Locking
&lt;ul&gt;
&lt;li&gt;Version columns&lt;/li&gt;
&lt;li&gt;Property level&lt;/li&gt;
&lt;li&gt;Force version increment&lt;/li&gt;
&lt;li&gt;application version check&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pessimistic Locking&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 4: Enhanced Features&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: Features that are not used by everyone. They are not important to understand to work with NH.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Using Native SQL&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sql queries&lt;/li&gt;
&lt;li&gt;custom SQL for query/update/insert/delete &lt;/li&gt;
&lt;li&gt;precompiled queries&lt;/li&gt;
&lt;li&gt;Using SP&amp;#39;s, db functions and triggers
&lt;ul&gt;
&lt;li&gt;property update/insert&lt;/li&gt;
&lt;li&gt;property generated&lt;/li&gt;
&lt;li&gt;property formula&lt;/li&gt;
&lt;li&gt;see also: &amp;quot;Generating The Database - Auxiliary Database Objects&amp;quot;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Using Database Views&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Caches&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;second level cache&lt;/li&gt;
&lt;li&gt;query cache&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Meta API&lt;br /&gt;&lt;br /&gt;Extend NH behaviour&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;user types&lt;/li&gt;
&lt;li&gt;Interceptors&lt;/li&gt;
&lt;li&gt;events&lt;/li&gt;
&lt;li&gt;connection provider&lt;/li&gt;
&lt;li&gt;transaction factory&lt;/li&gt;
&lt;li&gt;session provider&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 5: Examples&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: examples&lt;/i&gt;&lt;/p&gt;
&lt;h3&gt;Appendix&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;In this part: lists and references. The references (eg. mapping xml elements, dialects etc are important to find the documentation. So there are basically only links to chapters)&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Trouble shooting&lt;/p&gt;
&lt;p&gt;Configuration Reference&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Getting a connection (connection provider, user provided) (setting up)&lt;/li&gt;
&lt;li&gt;proxy generator (lazy loading)&lt;/li&gt;
&lt;li&gt;cache configuration (optimizing)&lt;/li&gt;
&lt;li&gt;Transaction factory (setting up)&lt;/li&gt;
&lt;li&gt;Dialects (setting up)&lt;/li&gt;
&lt;li&gt;Outer join fetching (lazy loading?)&lt;/li&gt;
&lt;li&gt;logging (trouble shooting)&lt;/li&gt;
&lt;li&gt;naming strategy (mapping)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Full List of Dialiects&lt;br /&gt;&lt;br /&gt;Full List of Drivers&lt;br /&gt;&lt;br /&gt;XML-Mapping full reference&lt;br /&gt;&lt;br /&gt;Full List of Types&lt;/p&gt;</description></item><item><title>NHibernate Documentation Structure Proposal</title><link>http://nhforge.org/wikis/reference2-0en/nhibernate-documentation-structure-proposal/revision/4.aspx</link><pubDate>Tue, 02 Jun 2009 16:51:25 GMT</pubDate><guid isPermaLink="false">45f813f2-f1c4-4eda-a619-288e3cadc793:279</guid><dc:creator>Stefan Steinegger</dc:creator><comments>http://nhforge.org/wikis/reference2-0en/nhibernate-documentation-structure-proposal/comments.aspx</comments><description>Revision 4 posted to NHibernate 2.0  by Stefan Steinegger on 02/06/2009 01:51:25 p.m.&lt;br /&gt;
&lt;h2&gt;NHibernate Documentation Structure Proposal&lt;/h2&gt;
&lt;div style="font-size: 90%;"&gt;Filed under: Nhibernate Documentation&lt;/div&gt;

&lt;p&gt;This is a proposal for a new structure of the NHibernate reference documentation. The goal is to discuss it and get some feedback from the community.&lt;/p&gt;
&lt;h2&gt;Goals&lt;br /&gt;&lt;/h2&gt;
&lt;p&gt;The goals of the restructuring of the documentation are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;move from &amp;quot;feature oriented&amp;quot; to &amp;quot;solution oriented&amp;quot;. For instance, instead of habing a chapter about the &amp;quot;version&amp;quot; xml element, there is a chapter about &amp;quot;concurrency&amp;quot;. So the reader has a problem to solve, and he finds a chapter that explains, how NH solves it. The reader can&amp;#39;t know that he needs a version element. Such a chapter should cover all elements of a certain problem, in the given example this are the version xml-element, the optimistic-lock xml-attribute of classes and properties, explicit version increment, locking and so on.&lt;/li&gt;
&lt;li&gt;Additionally, there shall be a complete reference of the mappings, configurations and others in an appendix that links to the chapters.&lt;/li&gt;
&lt;li&gt;More diagrams for mapping strategies&lt;/li&gt;
&lt;li&gt;More best practices and patterns&lt;/li&gt;
&lt;li&gt;Fill gaps where the documentation is not complete (enough), for instance special HQL features, user types, interceptors and events, connection factories and other extensions, (new) proxy factories etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Structure&lt;/h2&gt;
&lt;h3&gt;Part 1: First Steps&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;&lt;span style="background: SpringGreen;"&gt;In&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;this&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;part&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;:&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;a&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;high-level&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;overview&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;of&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;the&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;whole&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;picture&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Quick start&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;simple program that runs &amp;quot;out of the box&amp;quot;&lt;/li&gt;
&lt;li&gt;not too much code, not too much explanation (but links to chapters)&lt;/li&gt;
&lt;li&gt;includes inheritance, reference, list&lt;/li&gt;
&lt;li&gt;includes schema generation&lt;/li&gt;
&lt;li&gt;includes some simple hql&lt;/li&gt;
&lt;li&gt;includes configuration for sqlserver, orcale, mysql&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Architecture and basic concepts&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;Architecture (diagrams)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;quot;Factory-Chain&amp;quot; Configuration =&amp;gt; SessionFactory =&amp;gt; Session =&amp;gt; Transaction / Query &lt;/li&gt;
&lt;li&gt;&amp;nbsp;Instance States&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Session Cache (see also &amp;quot;Working with persistent objects&amp;quot;)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Application Architectures (referenced assemblies from application layers)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Setting Up&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Three ways: nhibernate.cfg.xml, app.config, programmatic&lt;/li&gt;
&lt;li&gt;Dialects and Drivers (See also Appendix &amp;quot;full list of Drivers / Dialects&amp;quot;)&lt;/li&gt;
&lt;li&gt;ProxyFactory configuration (see &amp;quot;lazy loading&amp;quot;)&lt;/li&gt;
&lt;li&gt;SessionProvider, contextual sessions&lt;/li&gt;
&lt;li&gt;Getting a connection (connection provider, user provided, connection release mode)&lt;/li&gt;
&lt;li&gt;How to set up a Project, minimal program
&lt;ul&gt;
&lt;li&gt;configuration file&lt;/li&gt;
&lt;li&gt;mapping files (see &amp;quot;OR Mapping Basics&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 2: Writing and Mapping Classes&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;&lt;span style="background: SpringGreen;"&gt;In&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;this&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;part&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;:&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Static&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;view&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;classes&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;mappings&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;db&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;schema&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Persistent classes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Example poco, basic rules&lt;/li&gt;
&lt;li&gt;Object Identity
&lt;ul&gt;
&lt;li&gt;id generators&lt;/li&gt;
&lt;li&gt;best practices&lt;/li&gt;
&lt;li&gt;compsite keys (see also &amp;quot;Working with legacy databases&amp;quot;)&lt;/li&gt;
&lt;li&gt;component keys (see also &amp;quot;Working with legacy databases&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Overriding Equals and GetHashCode&lt;/li&gt;
&lt;li&gt;Optional: Version (see optimistic locking)&lt;/li&gt;
&lt;li&gt;lifecycle callbacks&lt;/li&gt;
&lt;li&gt;validation&lt;/li&gt;
&lt;li&gt;see also: lazy loading (because of virtual)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OR Mapping Basics&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage mapping files
&lt;ul&gt;
&lt;li&gt;as xml files&lt;/li&gt;
&lt;li&gt;as embedded resources&lt;/li&gt;
&lt;li&gt;modular mapping files&lt;/li&gt;
&lt;li&gt;alternatives (attributes, FNH)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Using quoted identifiers
&lt;ul&gt;
&lt;li&gt;NH Types (see also: &amp;quot;Extend NH behaviour - user types&amp;quot;, Appendix &amp;quot;Full List of Types&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Naming conventions&lt;/li&gt;
&lt;li&gt;Property / field (access strategy)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping primitive values and single ended references&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;properties&lt;/li&gt;
&lt;li&gt;references many-to-one&lt;/li&gt;
&lt;li&gt;references one-to-one&lt;/li&gt;
&lt;li&gt;map several classes to one table: components&lt;/li&gt;
&lt;li&gt;dynamic components&lt;/li&gt;
&lt;li&gt;map a class to several tables: join&lt;/li&gt;
&lt;li&gt;any types&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping Collections&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;persistent collections&lt;/li&gt;
&lt;li&gt;set, list, map, bag, array, primitive-array&lt;/li&gt;
&lt;li&gt;one-to-many relations&lt;/li&gt;
&lt;li&gt;many-to-many relations&lt;/li&gt;
&lt;li&gt;composite-elemements&lt;/li&gt;
&lt;li&gt;collection performance&lt;/li&gt;
&lt;li&gt;Sorted collections&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping Inheritance&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Table per Hierarchy&lt;/li&gt;
&lt;li&gt;Table per Concrete Class&lt;/li&gt;
&lt;li&gt;Table per Class&lt;/li&gt;
&lt;li&gt;Mixing strategies&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping to legacy databases&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;composite keys &lt;/li&gt;
&lt;li&gt;component keys&lt;/li&gt;
&lt;li&gt;property-ref&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Generating The Database &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The schema export tool&lt;/li&gt;
&lt;li&gt;not null&lt;/li&gt;
&lt;li&gt;foreign keys&lt;/li&gt;
&lt;li&gt;indexes&lt;/li&gt;
&lt;li&gt;unique keys&lt;/li&gt;
&lt;li&gt;Auxiliary Database Objects&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;mapping file generation from entity&lt;/p&gt;
&lt;h3&gt;Part 3: Working with Persistent Objects&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;&lt;span style="background: SpringGreen;"&gt;In&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;this&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;part&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;:&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Dynamic&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;view&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;sessions&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;queries&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;modifications&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;transactions&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;etc&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="background: SpringGreen;"&gt;Working&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;with&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;sessions&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;sessions&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;session&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;cache&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;flushing&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;cascading&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;detached&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;objects&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;reattaching&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Querying&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Introduction, when to use which kind of query&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;HQL Queries&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Syntax&lt;/li&gt;
&lt;li&gt;Multi Query&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Criteria Queries&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API&lt;/li&gt;
&lt;li&gt;Multi Criteria&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Using NH filters
&lt;/p&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;p&gt;Lazy loading and fetching strategies&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fetching strategies&lt;/li&gt;
&lt;li&gt;collections&lt;/li&gt;
&lt;li&gt;references (proxies)&lt;/li&gt;
&lt;li&gt;load&lt;/li&gt;
&lt;li&gt;Utility.Initialize&lt;/li&gt;
&lt;li&gt;batch fetching&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Working&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;with&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;sessions&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;sessions&lt;/span&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;,&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;session&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;cache&lt;/span&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;,&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;flushing&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;cascading&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;detached&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;objects&lt;/span&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;,&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;reattaching&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Updating and deleting&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;updating, batch-updates, HQL updates&lt;/li&gt;
&lt;li&gt;deleting, one-shot-delete, HQL delete&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Transactions And Concurrency&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transaction factory (see also: setting up)&lt;/li&gt;
&lt;li&gt;Concurrency
&lt;ul&gt;
&lt;li&gt;Optimistic Locking
&lt;ul&gt;
&lt;li&gt;Version columns&lt;/li&gt;
&lt;li&gt;Property level&lt;/li&gt;
&lt;li&gt;Force version increment&lt;/li&gt;
&lt;li&gt;application version check&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pessimistic Locking&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 4: Enhanced Features&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;&lt;span style="background: SpringGreen;"&gt;In&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;this&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;part&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;:&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Features&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;that&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;are&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;not&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;used&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;by&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;everyone&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;.&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;They&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;are&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;not&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;important&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;to&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;understand&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;to&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;work&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;with&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;NH&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Using Native SQL&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sql queries&lt;/li&gt;
&lt;li&gt;custom SQL for query/update/insert/delete &lt;/li&gt;
&lt;li&gt;precompiled queries&lt;/li&gt;
&lt;li&gt;Using SP&amp;#39;s, db functions and triggers
&lt;ul&gt;
&lt;li&gt;property update/insert&lt;/li&gt;
&lt;li&gt;property generated&lt;/li&gt;
&lt;li&gt;property formula&lt;/li&gt;
&lt;li&gt;see also: &amp;quot;Generating The Database - Auxiliary Database Objects&amp;quot;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Using Database Views&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Caches&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;second level cache&lt;/li&gt;
&lt;li&gt;query cache&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Meta API&lt;br /&gt;&lt;br /&gt;Extend NH behaviour&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;user types&lt;/li&gt;
&lt;li&gt;Interceptors&lt;/li&gt;
&lt;li&gt;events&lt;/li&gt;
&lt;li&gt;connection provider&lt;/li&gt;
&lt;li&gt;transaction factory&lt;/li&gt;
&lt;li&gt;session provider&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 5: Examples&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;&lt;span style="background: SpringGreen;"&gt;In&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;this&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;part&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;:&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;examples&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;h3&gt;Appendix&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;&lt;span style="background: SpringGreen;"&gt;In&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;this&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;part&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;:&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;lists&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;and&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;references&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;.&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;The&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;references&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;(&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;eg.&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;mapping&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;xml&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;elements&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;dialects&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;etc&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;are&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;important&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;to&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;find&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;the&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;documentation&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;.&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;So&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;there&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;are&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;basically&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;only&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;links&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;to&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;chapters&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;)&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Trouble shooting&lt;/p&gt;
&lt;p&gt;Configuration Reference&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Getting a connection (connection provider, user provided) (setting up)&lt;/li&gt;
&lt;li&gt;proxy generator (lazy loading)&lt;/li&gt;
&lt;li&gt;cache configuration (optimizing)&lt;/li&gt;
&lt;li&gt;Transaction factory (setting up)&lt;/li&gt;
&lt;li&gt;Dialects (setting up)&lt;/li&gt;
&lt;li&gt;Outer join fetching (lazy loading?)&lt;/li&gt;
&lt;li&gt;logging (trouble shooting)&lt;/li&gt;
&lt;li&gt;naming strategy (mapping)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Full List of Dialiects&lt;br /&gt;&lt;br /&gt;Full List of Drivers&lt;br /&gt;&lt;br /&gt;XML-Mapping full reference&lt;br /&gt;&lt;br /&gt;Full List of Types&lt;/p&gt;</description></item><item><title>NHibernate Documentation Structure Proposal</title><link>http://nhforge.org/wikis/reference2-0en/nhibernate-documentation-structure-proposal/revision/3.aspx</link><pubDate>Sat, 30 May 2009 22:16:09 GMT</pubDate><guid isPermaLink="false">45f813f2-f1c4-4eda-a619-288e3cadc793:277</guid><dc:creator>Stefan Steinegger</dc:creator><comments>http://nhforge.org/wikis/reference2-0en/nhibernate-documentation-structure-proposal/comments.aspx</comments><description>Revision 3 posted to NHibernate 2.0  by Stefan Steinegger on 30/05/2009 07:16:09 p.m.&lt;br /&gt;
&lt;h2&gt;NHibernate Documentation Structure Proposal&lt;/h2&gt;
&lt;div style="font-size: 90%;"&gt;Filed under: Nhibernate Documentation&lt;/div&gt;

&lt;p&gt;This is a proposal for a new structure of the NHibernate reference documentation. The goal is to discuss it and get some feedback from the community.&lt;/p&gt;
&lt;h2&gt;Goals&lt;br /&gt;&lt;/h2&gt;
&lt;p&gt;The goals of the restructuring of the documentation are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;move from &amp;quot;feature oriented&amp;quot; to &amp;quot;solution oriented&amp;quot;. For instance, instead of habing a chapter about the &amp;quot;version&amp;quot; xml element, there is a chapter about &amp;quot;concurrency&amp;quot;. So the reader has a problem to solve, and he finds a chapter that explains, how NH solves it. The reader can&amp;#39;t know that he needs a version element. Such a chapter should cover all elements of a certain problem, in the given example this are the version xml-element, the optimistic-lock xml-attribute of classes and properties, explicit version increment, locking and so on.&lt;/li&gt;
&lt;li&gt;Additionally, there shall be a complete reference of the mappings, configurations and others in an appendix that links to the chapters.&lt;/li&gt;
&lt;li&gt;More diagrams for mapping strategies&lt;/li&gt;
&lt;li&gt;More best practices and patterns&lt;/li&gt;
&lt;li&gt;Fill gaps where the documentation is not complete (enough), for instance special HQL features, user types, interceptors and events, connection factories and other extensions, (new) proxy factories etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Structure&lt;/h2&gt;
&lt;h3&gt;Part 1: First Steps&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;Quick start&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;simple program that runs &amp;quot;out of the box&amp;quot;&lt;/li&gt;
&lt;li&gt;not too much code, not too much explanation (but links to chapters)&lt;/li&gt;
&lt;li&gt;includes inheritance, reference, list&lt;/li&gt;
&lt;li&gt;includes schema generation&lt;/li&gt;
&lt;li&gt;includes some simple hql&lt;/li&gt;
&lt;li&gt;includes configuration for sqlserver, orcale, mysql&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Architecture and basic concepts&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;Architecture (diagrams)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;quot;Factory-Chain&amp;quot; Configuration =&amp;gt; SessionFactory =&amp;gt; Session =&amp;gt; Transaction / Query &lt;/li&gt;
&lt;li&gt;&amp;nbsp;Instance States&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Session Cache (see also &amp;quot;Working with persistent objects&amp;quot;)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Application Architectures (referenced assemblies from application layers)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Setting Up&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Three ways: nhibernate.cfg.xml, app.config, programmatic&lt;/li&gt;
&lt;li&gt;Dialects and Drivers (See also Appendix &amp;quot;full list of Drivers / Dialects&amp;quot;)&lt;/li&gt;
&lt;li&gt;ProxyFactory configuration (see &amp;quot;lazy loading&amp;quot;)&lt;/li&gt;
&lt;li&gt;SessionProvider, contextual sessions&lt;/li&gt;
&lt;li&gt;Getting a connection (connection provider, user provided, connection release mode)&lt;/li&gt;
&lt;li&gt;How to set up a Project, minimal program
&lt;ul&gt;
&lt;li&gt;configuration file&lt;/li&gt;
&lt;li&gt;mapping files (see &amp;quot;OR Mapping Basics&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 2: Writing and Mapping Classes&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;Persistent classes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Example poco, basic rules&lt;/li&gt;
&lt;li&gt;Object Identity
&lt;ul&gt;
&lt;li&gt;id generators&lt;/li&gt;
&lt;li&gt;best practices&lt;/li&gt;
&lt;li&gt;compsite keys (see also &amp;quot;Working with legacy databases&amp;quot;)&lt;/li&gt;
&lt;li&gt;component keys (see also &amp;quot;Working with legacy databases&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Overriding Equals and GetHashCode&lt;/li&gt;
&lt;li&gt;Optional: Version (see optimistic locking)&lt;/li&gt;
&lt;li&gt;lifecycle callbacks&lt;/li&gt;
&lt;li&gt;validation&lt;/li&gt;
&lt;li&gt;see also: lazy loading (because of virtual)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OR Mapping Basics&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage mapping files
&lt;ul&gt;
&lt;li&gt;as xml files&lt;/li&gt;
&lt;li&gt;as embedded resources&lt;/li&gt;
&lt;li&gt;modular mapping files&lt;/li&gt;
&lt;li&gt;alternatives (attributes, FNH)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Using quoted identifiers
&lt;ul&gt;
&lt;li&gt;NH Types (see also: &amp;quot;Extend NH behaviour - user types&amp;quot;, Appendix &amp;quot;Full List of Types&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Naming conventions&lt;/li&gt;
&lt;li&gt;Property / field (access strategy)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping primitive values and single ended references&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;properties&lt;/li&gt;
&lt;li&gt;references many-to-one&lt;/li&gt;
&lt;li&gt;references one-to-one&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;map&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;several&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;classes&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;to&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;one&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;table&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;:&lt;/span&gt; components&lt;/li&gt;
&lt;li&gt;dynamic components&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;map&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;a&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;class&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;to&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;several&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;tables&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;:&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;join&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;any types&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping Collections&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;persistent collections&lt;/li&gt;
&lt;li&gt;set, list, map, bag, array, primitive-array&lt;/li&gt;
&lt;li&gt;one-to-many relations&lt;/li&gt;
&lt;li&gt;many-to-many relations&lt;/li&gt;
&lt;li&gt;composite-elemements&lt;/li&gt;
&lt;li&gt;collection performance&lt;/li&gt;
&lt;li&gt;Sorted collections&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping Inheritance&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Table per Hierarchy&lt;/li&gt;
&lt;li&gt;Table per Concrete Class&lt;/li&gt;
&lt;li&gt;Table per Class&lt;/li&gt;
&lt;li&gt;Mixing strategies&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping to legacy databases&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;composite keys &lt;/li&gt;
&lt;li&gt;component keys&lt;/li&gt;
&lt;li&gt;property-ref&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Generating The Database &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The schema export tool&lt;/li&gt;
&lt;li&gt;not null&lt;/li&gt;
&lt;li&gt;foreign keys&lt;/li&gt;
&lt;li&gt;indexes&lt;/li&gt;
&lt;li&gt;unique keys&lt;/li&gt;
&lt;li&gt;Auxiliary Database Objects&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;mapping file generation from entity&lt;/p&gt;
&lt;h3&gt;Part 3: Working with Persistent Objects&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;Querying&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Introduction, when to use which kind of query&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;HQL Queries&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Syntax&lt;/li&gt;
&lt;li&gt;Multi Query&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Criteria Queries&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API&lt;/li&gt;
&lt;li&gt;Multi Criteria&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Using NH filters
&lt;/p&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;p&gt;Lazy loading and fetching strategies&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fetching strategies&lt;/li&gt;
&lt;li&gt;collections&lt;/li&gt;
&lt;li&gt;references (proxies)&lt;/li&gt;
&lt;li&gt;load&lt;/li&gt;
&lt;li&gt;Utility.Initialize&lt;/li&gt;
&lt;li&gt;batch fetching&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Working with sessions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sessions, session cache, flushing
&lt;/li&gt;
&lt;li&gt;cascading&lt;/li&gt;
&lt;li&gt;detached objects, reattaching&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Updating and deleting&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;updating, batch-updates, HQL updates&lt;/li&gt;
&lt;li&gt;deleting, one-shot-delete, HQL delete&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Transactions And Concurrency&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transaction factory (see also: setting up)&lt;/li&gt;
&lt;li&gt;Concurrency
&lt;ul&gt;
&lt;li&gt;Optimistic Locking
&lt;ul&gt;
&lt;li&gt;Version columns&lt;/li&gt;
&lt;li&gt;Property level&lt;/li&gt;
&lt;li&gt;Force version increment&lt;/li&gt;
&lt;li&gt;application version check&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pessimistic Locking&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 4: Enhanced Features&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;Using Native SQL&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sql queries&lt;/li&gt;
&lt;li&gt;custom SQL for query/update/insert/delete &lt;/li&gt;
&lt;li&gt;precompiled queries&lt;/li&gt;
&lt;li&gt;Using SP&amp;#39;s, db functions and triggers
&lt;ul&gt;
&lt;li&gt;property update/insert&lt;/li&gt;
&lt;li&gt;property generated&lt;/li&gt;
&lt;li&gt;property formula&lt;/li&gt;
&lt;li&gt;see also: &amp;quot;Generating The Database - Auxiliary Database Objects&amp;quot;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Using Database Views&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Caches&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;second level cache&lt;/li&gt;
&lt;li&gt;query cache&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Meta API&lt;br /&gt;&lt;br /&gt;Extend NH behaviour&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;user types&lt;/li&gt;
&lt;li&gt;Interceptors&lt;/li&gt;
&lt;li&gt;events&lt;/li&gt;
&lt;li&gt;connection provider&lt;/li&gt;
&lt;li&gt;transaction factory&lt;/li&gt;
&lt;li&gt;session provider&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Part 5: Examples&lt;/h3&gt;
&lt;h3&gt;Appendix&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;Trouble shooting&lt;/p&gt;
&lt;p&gt;Configuration Reference&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Getting a connection (connection provider, user provided) (setting up)&lt;/li&gt;
&lt;li&gt;proxy generator (lazy loading)&lt;/li&gt;
&lt;li&gt;cache configuration (optimizing)&lt;/li&gt;
&lt;li&gt;Transaction factory (setting up)&lt;/li&gt;
&lt;li&gt;Dialects (setting up)&lt;/li&gt;
&lt;li&gt;Outer join fetching (lazy loading?)&lt;/li&gt;
&lt;li&gt;logging (trouble shooting)&lt;/li&gt;
&lt;li&gt;naming strategy (mapping)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Full List of Dialiects&lt;br /&gt;&lt;br /&gt;Full List of Drivers&lt;br /&gt;&lt;br /&gt;XML-Mapping full reference&lt;br /&gt;&lt;br /&gt;Full List of Types&lt;/p&gt;</description></item><item><title>NHibernate Documentation Structure Proposal</title><link>http://nhforge.org/wikis/reference2-0en/nhibernate-documentation-structure-proposal/revision/2.aspx</link><pubDate>Sat, 30 May 2009 22:13:14 GMT</pubDate><guid isPermaLink="false">45f813f2-f1c4-4eda-a619-288e3cadc793:272</guid><dc:creator>Stefan Steinegger</dc:creator><comments>http://nhforge.org/wikis/reference2-0en/nhibernate-documentation-structure-proposal/comments.aspx</comments><description>Revision 2 posted to NHibernate 2.0  by Stefan Steinegger on 30/05/2009 07:13:14 p.m.&lt;br /&gt;
&lt;h2&gt;NHibernate Documentation Structure Proposal&lt;/h2&gt;
&lt;div style="font-size: 90%;"&gt;Filed under: Nhibernate Documentation&lt;/div&gt;

&lt;p&gt;This is a proposal for a new structure of the NHibernate reference documentation. The goal is to discuss it and get some feedback &lt;span style="text-decoration: line-through; color: red;"&gt;fro&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;from&lt;/span&gt; the community.&lt;/p&gt;
&lt;h2&gt;Goals&lt;br /&gt;&lt;/h2&gt;
&lt;p&gt;The goals of the &lt;span style="text-decoration: line-through; color: red;"&gt;resturcutring&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;restructuring&lt;/span&gt; of the documentation are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;move from &amp;quot;feature oriented&amp;quot; to &amp;quot;solution oriented&amp;quot;. For instance, instead of habing a chapter about the &amp;quot;version&amp;quot; xml element, there is a chapter about &amp;quot;concurrency&amp;quot;. So the reader has a problem to solve, and he finds a chapter that explains, how NH solves it. The reader can&amp;#39;t know that he needs a version element. Such a chapter should cover all elements of a certain problem, in the given example this are the version xml-element, the optimistic-lock xml-attribute of classes and properties, explicit version increment, locking and so on.&lt;/li&gt;
&lt;li&gt;Additionally, there shall be a complete reference of the mappings, configurations and others in an appendix that links to the chapters.&lt;/li&gt;
&lt;li&gt;More diagrams for mapping strategies&lt;/li&gt;
&lt;li&gt;More best practices and patterns&lt;/li&gt;
&lt;li&gt;Fill gaps where the documentation is not complete (enough), for instance special HQL features, user types, interceptors and events, connection factories and other extensions, (new) proxy factories etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Structure&lt;/h2&gt;
&lt;h3&gt;&lt;span style="background: SpringGreen;"&gt;Part&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;1&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;:&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;First&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Steps&lt;/span&gt;&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;Quick start&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;simple program that runs &amp;quot;out of the box&amp;quot;&lt;/li&gt;
&lt;li&gt;not too much code, not too much explanation (but links to chapters)&lt;/li&gt;
&lt;li&gt;includes inheritance, reference, list&lt;/li&gt;
&lt;li&gt;includes schema generation&lt;/li&gt;
&lt;li&gt;includes some simple hql&lt;/li&gt;
&lt;li&gt;includes configuration for sqlserver, orcale, mysql&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Architecture and basic concepts&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;Architecture (diagrams)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;quot;Factory-Chain&amp;quot; Configuration =&amp;gt; SessionFactory =&amp;gt; Session =&amp;gt; Transaction / Query &lt;/li&gt;
&lt;li&gt;&amp;nbsp;Instance States&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Session Cache (see also &amp;quot;Working with persistent objects&amp;quot;)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Application Architectures (referenced assemblies from application layers)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Setting Up&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Three ways: nhibernate.cfg.xml, app.config, programmatic&lt;/li&gt;
&lt;li&gt;Dialects and Drivers (See also Appendix &amp;quot;full list of Drivers / Dialects&amp;quot;)&lt;/li&gt;
&lt;li&gt;ProxyFactory configuration (see &amp;quot;lazy loading&amp;quot;)&lt;/li&gt;
&lt;li&gt;SessionProvider, contextual sessions&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;ConnectionProvider&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;Getting&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;a&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;connection&lt;/span&gt; (&lt;span style="text-decoration: line-through; color: red;"&gt;see&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;also&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;&amp;quot;extend&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;NH&lt;/span&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;quot;)&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;connection&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;provider&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;user&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;provided&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;connection&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;release&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;mode&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;How to set up a Project, minimal program
&lt;ul&gt;
&lt;li&gt;configuration file&lt;/li&gt;
&lt;li&gt;mapping files (see &amp;quot;OR Mapping Basics&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="background: SpringGreen;"&gt;Part&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;2&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;:&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Writing&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;and&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Mapping&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Classes&lt;/span&gt;&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;Persistent classes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Example poco, basic rules&lt;/li&gt;
&lt;li&gt;Object Identity
&lt;ul&gt;
&lt;li&gt;id generators&lt;/li&gt;
&lt;li&gt;best practices&lt;/li&gt;
&lt;li&gt;compsite keys (see also &amp;quot;Working with legacy databases&amp;quot;)&lt;/li&gt;
&lt;li&gt;component keys (see also &amp;quot;Working with legacy databases&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Overriding Equals and GetHashCode&lt;/li&gt;
&lt;li&gt;Optional: Version (see optimistic locking)&lt;/li&gt;
&lt;li&gt;lifecycle callbacks&lt;/li&gt;
&lt;li&gt;validation&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;see&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;also&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;:&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;lazy&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;loading&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;(&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;because&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;of&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;virtual&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OR Mapping Basics&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage mapping files
&lt;ul&gt;
&lt;li&gt;as xml files&lt;/li&gt;
&lt;li&gt;as embedded resources&lt;/li&gt;
&lt;li&gt;modular mapping files&lt;/li&gt;
&lt;li&gt;alternatives (attributes, FNH)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Using quoted identifiers
&lt;ul&gt;
&lt;li&gt;NH Types (see also: &amp;quot;Extend NH behaviour - user types&amp;quot;, Appendix &amp;quot;Full List of Types&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Naming conventions&lt;/li&gt;
&lt;li&gt;Property / field (access strategy)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping primitive values and single ended references&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;properties&lt;/li&gt;
&lt;li&gt;references many-to-one&lt;/li&gt;
&lt;li&gt;references one-to-one&lt;/li&gt;
&lt;li&gt;components&lt;/li&gt;
&lt;li&gt;dynamic components&lt;/li&gt;
&lt;li&gt;any types&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping Collections&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;persistent collections&lt;/li&gt;
&lt;li&gt;set, list, map, bag, array, primitive-array&lt;/li&gt;
&lt;li&gt;one-to-many relations&lt;/li&gt;
&lt;li&gt;many-to-many relations&lt;/li&gt;
&lt;li&gt;composite-elemements&lt;/li&gt;
&lt;li&gt;collection performance&lt;/li&gt;
&lt;li&gt;Sorted collections&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping Inheritance&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Table per Hierarchy&lt;/li&gt;
&lt;li&gt;Table per Concrete Class&lt;/li&gt;
&lt;li&gt;Table per Class&lt;/li&gt;
&lt;li&gt;Mixing &lt;span style="background: SpringGreen;"&gt;strategies&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="background: SpringGreen;"&gt;Mapping&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;to&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;legacy&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;databases&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;composite&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;keys&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;component&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;keys&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;property-ref&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="background: SpringGreen;"&gt;Generating&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;The&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Database&lt;/span&gt; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;The&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;schema&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;export&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;tool&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;not&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;null&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;foreign&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;keys&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;indexes&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;unique&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;keys&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;Auxiliary&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Database&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Objects&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="background: SpringGreen;"&gt;mapping&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;file&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;generation&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;from&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;entity&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="background: SpringGreen;"&gt;Part&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;3&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;:&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Working&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;with&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Persistent&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Objects&lt;/span&gt;&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="background: SpringGreen;"&gt;Querying&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;Introduction&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;when&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;to&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;use&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;which&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;kind&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;of&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;query&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="background: SpringGreen;"&gt;HQL&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Queries&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;Syntax&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;Multi&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Query&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="background: SpringGreen;"&gt;Criteria&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Queries&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;API&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;Multi&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Criteria&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="background: SpringGreen;"&gt;Using&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;NH&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;filters&lt;/span&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="background: SpringGreen;"&gt;Lazy&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;loading&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;and&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;fetching&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;strategies&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;fetching&lt;/span&gt; strategies&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;collections&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;references&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;(&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;proxies)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;load&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;Utility.Initialize&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;batch&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;fetching&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Working with &lt;span style="text-decoration: line-through; color: red;"&gt;persistent&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;objects&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;sessions&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sessions, session cache&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;flushing&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;cascading&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;detached&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;objects&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;reattaching&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="background: SpringGreen;"&gt;Updating&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;and&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;deleting&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;updating&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;batch-updates&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;HQL&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;updates&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;deleting&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;one-shot-delete&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;,&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;HQL&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;delete&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Transactions And Concurrency&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Getting&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;a&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;connection&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;(&lt;/span&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;see&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;also&lt;/span&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;:&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;setting&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;up&lt;/span&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;,&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;connenction&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;provider&lt;/span&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;,&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;user&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;provided&lt;/span&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;connection&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;release&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;mode&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transaction factory (see also: setting up)&lt;/li&gt;
&lt;li&gt;Concurrency
&lt;ul&gt;
&lt;li&gt;Optimistic Locking
&lt;ul&gt;
&lt;li&gt;Version columns&lt;/li&gt;
&lt;li&gt;Property level&lt;/li&gt;
&lt;li&gt;Force version increment&lt;/li&gt;
&lt;li&gt;application version check&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pessimistic Locking&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Querying&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;HQL&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Criteria&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;NH&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;filters&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp; &lt;span style="text-decoration: line-through; color: red;"&gt;Updating&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp; &lt;span style="text-decoration: line-through; color: red;"&gt;cascades&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="background: SpringGreen;"&gt;Part&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;4&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;:&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Enhanced&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Features&lt;/span&gt;&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;Using Native SQL&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;Sql&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;queries&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;custom SQL for query/update/insert/delete &lt;/li&gt;
&lt;li&gt;precompiled queries&lt;/li&gt;
&lt;li&gt;Using SP&amp;#39;s, db functions and triggers
&lt;ul&gt;
&lt;li&gt;property update/insert&lt;/li&gt;
&lt;li&gt;property generated&lt;/li&gt;
&lt;li&gt;property formula&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;database&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;objects&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;in&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;mapping&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;files&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Working&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;with&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;legacy&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;databases&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;composite&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;keys&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;component&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;keys&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;property-ref&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Lazy&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;loading&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;and&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;fetching&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;strategies&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;fetching&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;strategies&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;collections&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;references&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;(&lt;/span&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;proxies)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;load&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Utility.Initialize&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;batch&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;fetching&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;see&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;also&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;:&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;&amp;quot;Generating&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;The&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Database&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;-&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Auxiliary&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Database&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Objects&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;&amp;quot;&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;Using&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Database&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;Views&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Caches&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;second level cache&lt;/li&gt;
&lt;li&gt;query cache&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Batches&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Query&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Code&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;Generation&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;Tools&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;DDL&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;:&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;Generating&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;the&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;database&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;from&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;enity&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;and&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;mapping&lt;/span&gt; 
&lt;ul&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;schema&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;export&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;not&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;null&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;foreign&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;keys&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;indexes&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;unique&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;keys&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Auxiliary&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;Database&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;Objects&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Entity&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;Code&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;generation&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;from&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;mapping&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;mapping&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;file&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;generation&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;from&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;entity&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Meta API&lt;br /&gt;&lt;br /&gt;Extend NH behaviour&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;user types&lt;/li&gt;
&lt;li&gt;Interceptors&lt;/li&gt;
&lt;li&gt;events&lt;/li&gt;
&lt;li&gt;connection provider&lt;/li&gt;
&lt;li&gt;&lt;span style="background: SpringGreen;"&gt;transaction&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;factory&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;session provider&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="background: SpringGreen;"&gt;Part&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;5&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;:&lt;/span&gt; Examples&lt;/h3&gt;
&lt;h3&gt;&lt;span style="background: SpringGreen;"&gt;Appendix&lt;/span&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;Trouble shooting&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;Appendix&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Configuration Reference&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Getting a connection (connection provider, user provided) (setting up)&lt;/li&gt;
&lt;li&gt;proxy generator (lazy loading)&lt;/li&gt;
&lt;li&gt;cache configuration (optimizing)&lt;/li&gt;
&lt;li&gt;Transaction factory (setting up)&lt;/li&gt;
&lt;li&gt;Dialects (setting up)&lt;/li&gt;
&lt;li&gt;Outer join fetching (lazy loading?)&lt;/li&gt;
&lt;li&gt;logging (trouble shooting)&lt;/li&gt;
&lt;li&gt;naming strategy (mapping)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Full List of Dialiects&lt;br /&gt;&lt;br /&gt;Full List of Drivers&lt;br /&gt;&lt;br /&gt;XML-Mapping full reference&lt;br /&gt;&lt;br /&gt;Full List of Types&lt;/p&gt;</description></item><item><title>NHibernate Documentation Structure Proposal</title><link>http://nhforge.org/wikis/reference2-0en/nhibernate-documentation-structure-proposal/revision/1.aspx</link><pubDate>Thu, 28 May 2009 09:55:28 GMT</pubDate><guid isPermaLink="false">45f813f2-f1c4-4eda-a619-288e3cadc793:271</guid><dc:creator>Stefan Steinegger</dc:creator><comments>http://nhforge.org/wikis/reference2-0en/nhibernate-documentation-structure-proposal/comments.aspx</comments><description>Revision 1 posted to NHibernate 2.0  by Stefan Steinegger on 28/05/2009 06:55:28 a.m.&lt;br /&gt;
&lt;p&gt;This is a proposal for a new structure of the NHibernate reference documentation. The goal is to discuss it and get some feedback fro the community.&lt;/p&gt;
&lt;h2&gt;Goals&lt;br /&gt;&lt;/h2&gt;
&lt;p&gt;The goals of the resturcutring of the documentation are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;move from &amp;quot;feature oriented&amp;quot; to &amp;quot;solution oriented&amp;quot;. For instance, instead of habing a chapter about the &amp;quot;version&amp;quot; xml element, there is a chapter about &amp;quot;concurrency&amp;quot;. So the reader has a problem to solve, and he finds a chapter that explains, how NH solves it. The reader can&amp;#39;t know that he needs a version element. Such a chapter should cover all elements of a certain problem, in the given example this are the version xml-element, the optimistic-lock xml-attribute of classes and properties, explicit version increment, locking and so on.&lt;/li&gt;
&lt;li&gt;Additionally, there shall be a complete reference of the mappings, configurations and others in an appendix that links to the chapters.&lt;/li&gt;
&lt;li&gt;More diagrams for mapping strategies&lt;/li&gt;
&lt;li&gt;More best practices and patterns&lt;/li&gt;
&lt;li&gt;Fill gaps where the documentation is not complete (enough), for instance special HQL features, user types, interceptors and events, connection factories and other extensions, (new) proxy factories etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Structure&lt;/h2&gt;
&lt;p&gt;Quick start&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;simple program that runs &amp;quot;out of the box&amp;quot;&lt;/li&gt;
&lt;li&gt;not too much code, not too much explanation (but links to chapters)&lt;/li&gt;
&lt;li&gt;includes inheritance, reference, list&lt;/li&gt;
&lt;li&gt;includes schema generation&lt;/li&gt;
&lt;li&gt;includes some simple hql&lt;/li&gt;
&lt;li&gt;includes configuration for sqlserver, orcale, mysql&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Architecture and basic concepts&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;Architecture (diagrams)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;quot;Factory-Chain&amp;quot; Configuration =&amp;gt; SessionFactory =&amp;gt; Session =&amp;gt; Transaction / Query &lt;/li&gt;
&lt;li&gt;&amp;nbsp;Instance States&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Session Cache (see also &amp;quot;Working with persistent objects&amp;quot;)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Application Architectures (referenced assemblies from application layers)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Setting Up&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Three ways: nhibernate.cfg.xml, app.config, programmatic&lt;/li&gt;
&lt;li&gt;Dialects and Drivers (See also Appendix &amp;quot;full list of Drivers / Dialects&amp;quot;)&lt;/li&gt;
&lt;li&gt;ProxyFactory configuration (see &amp;quot;lazy loading&amp;quot;)&lt;/li&gt;
&lt;li&gt;SessionProvider, contextual sessions&lt;/li&gt;
&lt;li&gt;ConnectionProvider (see also &amp;quot;extend NH&amp;quot;)&lt;/li&gt;
&lt;li&gt;How to set up a Project, minimal program
&lt;ul&gt;
&lt;li&gt;configuration file&lt;/li&gt;
&lt;li&gt;mapping files (see &amp;quot;OR Mapping Basics&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Persistent classes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Example poco, basic rules&lt;/li&gt;
&lt;li&gt;Object Identity
&lt;ul&gt;
&lt;li&gt;id generators&lt;/li&gt;
&lt;li&gt;best practices&lt;/li&gt;
&lt;li&gt;compsite keys (see also &amp;quot;Working with legacy databases&amp;quot;)&lt;/li&gt;
&lt;li&gt;component keys (see also &amp;quot;Working with legacy databases&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Overriding Equals and GetHashCode&lt;/li&gt;
&lt;li&gt;Optional: Version (see optimistic locking)&lt;/li&gt;
&lt;li&gt;lifecycle callbacks&lt;/li&gt;
&lt;li&gt;validation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OR Mapping Basics&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage mapping files
&lt;ul&gt;
&lt;li&gt;as xml files&lt;/li&gt;
&lt;li&gt;as embedded resources&lt;/li&gt;
&lt;li&gt;modular mapping files&lt;/li&gt;
&lt;li&gt;alternatives (attributes, FNH)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Using quoted identifiers
&lt;ul&gt;
&lt;li&gt;NH Types (see also: &amp;quot;Extend NH behaviour - user types&amp;quot;, Appendix &amp;quot;Full List of Types&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Naming conventions&lt;/li&gt;
&lt;li&gt;Property / field (access strategy)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;Mapping primitive values and single ended references&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;properties&lt;/li&gt;
&lt;li&gt;references many-to-one&lt;/li&gt;
&lt;li&gt;references one-to-one&lt;/li&gt;
&lt;li&gt;components&lt;/li&gt;
&lt;li&gt;dynamic components&lt;/li&gt;
&lt;li&gt;any types&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping Collections&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;persistent collections&lt;/li&gt;
&lt;li&gt;set, list, map, bag, array, primitive-array&lt;/li&gt;
&lt;li&gt;one-to-many relations&lt;/li&gt;
&lt;li&gt;many-to-many relations&lt;/li&gt;
&lt;li&gt;composite-elemements&lt;/li&gt;
&lt;li&gt;collection performance&lt;/li&gt;
&lt;li&gt;Sorted collections&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mapping Inheritance&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Table per Hierarchy&lt;/li&gt;
&lt;li&gt;Table per Concrete Class&lt;/li&gt;
&lt;li&gt;Table per Class&lt;/li&gt;
&lt;li&gt;Mixing strategies&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Working with persistent objects&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sessions, session cache&lt;/li&gt;
&lt;li&gt;cascading&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Transactions And Concurrency&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Getting a connection (see also: setting up, connenction provider, user provided)&lt;/li&gt;
&lt;li&gt;connection release mode&lt;/li&gt;
&lt;li&gt;Transaction factory (see also: setting up)&lt;/li&gt;
&lt;li&gt;Concurrency
&lt;ul&gt;
&lt;li&gt;Optimistic Locking
&lt;ul&gt;
&lt;li&gt;Version columns&lt;/li&gt;
&lt;li&gt;Property level&lt;/li&gt;
&lt;li&gt;Force version increment&lt;/li&gt;
&lt;li&gt;application version check&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pessimistic Locking&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Querying&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HQL&lt;/li&gt;
&lt;li&gt;Criteria&lt;/li&gt;
&lt;li&gt;NH filters&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp; Updating&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp; cascades&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Using Native SQL&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;custom SQL for query/update/insert/delete &lt;/li&gt;
&lt;li&gt;precompiled queries&lt;/li&gt;
&lt;li&gt;Using SP&amp;#39;s, db functions and triggers
&lt;ul&gt;
&lt;li&gt;property update/insert&lt;/li&gt;
&lt;li&gt;property generated&lt;/li&gt;
&lt;li&gt;property formula&lt;/li&gt;
&lt;li&gt;database objects in mapping files&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Working with legacy databases&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;composite keys &lt;/li&gt;
&lt;li&gt;component keys&lt;/li&gt;
&lt;li&gt;property-ref&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lazy loading and fetching strategies&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fetching strategies&lt;/li&gt;
&lt;li&gt;collections&lt;/li&gt;
&lt;li&gt;references (proxies)&lt;/li&gt;
&lt;li&gt;load&lt;/li&gt;
&lt;li&gt;Utility.Initialize&lt;/li&gt;
&lt;li&gt;batch fetching&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Caches&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;second level cache&lt;/li&gt;
&lt;li&gt;query cache&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Batches&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Query&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Code Generation Tools&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DDL : Generating the database from enity and mapping 
&lt;ul&gt;
&lt;li&gt;schema export&lt;/li&gt;
&lt;li&gt;not null&lt;/li&gt;
&lt;li&gt;foreign keys&lt;/li&gt;
&lt;li&gt;indexes&lt;/li&gt;
&lt;li&gt;unique keys&lt;/li&gt;
&lt;li&gt;Auxiliary Database Objects&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Entity Code generation from mapping&lt;/li&gt;
&lt;li&gt;mapping file generation from entity&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;Meta API&lt;br /&gt;&lt;br /&gt;Extend NH behaviour&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;user types&lt;/li&gt;
&lt;li&gt;Interceptors&lt;/li&gt;
&lt;li&gt;events&lt;/li&gt;
&lt;li&gt;connection provider&lt;/li&gt;
&lt;li&gt;session provider&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Examples&lt;/p&gt;
&lt;p&gt;Trouble shooting&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Appendix&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Configuration Reference&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Getting a connection (connection provider, user provided) (setting up)&lt;/li&gt;
&lt;li&gt;proxy generator (lazy loading)&lt;/li&gt;
&lt;li&gt;cache configuration (optimizing)&lt;/li&gt;
&lt;li&gt;Transaction factory (setting up)&lt;/li&gt;
&lt;li&gt;Dialects (setting up)&lt;/li&gt;
&lt;li&gt;Outer join fetching (lazy loading?)&lt;/li&gt;
&lt;li&gt;logging (trouble shooting)&lt;/li&gt;
&lt;li&gt;naming strategy (mapping)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Full List of Dialiects&lt;br /&gt;&lt;br /&gt;Full List of Drivers&lt;br /&gt;&lt;br /&gt;XML-Mapping full reference&lt;br /&gt;&lt;br /&gt;Full List of Types&lt;/p&gt;</description></item></channel></rss>