Today Fabio announced that NHibernate 3.0 General Availability can be downloaded from its home at Source Forge.
Here is a list of most notable (IMHO) features:
- New, full-featured, and extensible, Linq to NHibernate implementation (LINQ2NH 1.0 used to be a simple wrapper around ICriteria API):
- A blog post on the official NHForge blog announcing availability of LINQ2NH 2.0
- A blog post on Fabio’s blog explaining how to extend LINQ2NH with your own custom logic
- This LINQ2NH 2.0 slide deck from recent NHibernate Day conference in Europe provides some interesting details on capabilities and limitations
- The new QueryOver API. Positioned as a compromise between ICriteria API and LINQ, this strongly-typed fluent API gives much better control over generated SQL than what is possible with LINQ:
- Customizable SQL exception translation can now coexist with batching enabled – catch SQL errors (FK violations, unique constraints etc) and convert to your own Exception types:
- Fabio Maulo on Improving NHibernate ADO.NET Exception Management
- NH-2020
- Compatibility with ConfORM, the new fluent-style mapping engine similar to Fluent NHibernate. While Fluent NH mappings are supposed to be written by hand by the developer, ConfORM originated from an effort to generate NH mappings from XSDs. Unlike Fluent NH, ConfORM does not generate HBM.XML mappings behind the scene. Instead it uses the new NH 3.0 mapping extension points to inject mappings “directly” into Session Factory.
- Improved “fluent” SessionFactory configuration:
- Deferred loading of columns (aka “lazy properties“) — useful when your entity has a huge text column that is used rarely:
- The new pluggable logging subsystem (NHibernate.Logging) removes hard dependency on log4net. Now you can use CommonLogging or NLog - NH-1554
- Improved support for storing UTC dates in your database - NH-1135
- Support for memcached 1.4.4 and newer - NHCH-27 - the contribution I’m proud of!
- Experimental support of the new and much improved memcached client library called “Enyim” - finally you can leverage all features of newer Memcached implementations such as Membase:
- NHCH-26 aka NHibernate.Caches.EnyimMemcached
- Enyim Memcached Client official site
Misc Notes:
- NHibernate 3.0 is now compiled against .NET 3.5 Client Profile (but is known to work with 4.0 just fine)
- Please note that it may take a few days for the sources to get uploaded to the SymbolSource for your Visual Studio step-by-step debugging convenience
- Corresponding GA builds of other NHContrib projects (Caches, Validator etc.) are being released over the next day or two
- For full list of improvements and bug fixes see official Release Notes

