NOTE: NHibernate 2.0 GOLD is released. This post is outdated. Click here for the info.
The first official beta for NHibernate 2.0 was recently released
Click here to download the package.
This comes on the heels of the damaging ‘boycott’ of the Microsoft ‘Linq to Entities’ upcoming release, which was anticipated to be a serious competitor to NHibernate.
Click here to view the on-line petition
Click here to view the signers of the petition
LAST MINUTE UPDATE FROM THE NHIBERNATE TEAMThere has been a change in how NHibernate is packaged as the core and contrib aspects now have dedicated locations. Since NHibernate 2.0 Alpha 1, ONLY THE CORE of the project is included at the link above. The Contrib Projects are now in a dedicated location: http://sourceforge.net/projects/nhcontrib There are a few new projects that are essential to investigate for your needs (for example the Burrow project). Also be sure to visit the wiki for these significant projects: http://nhcontrib.wiki.sourceforge.net See the end of this post for a partial list of these contrib efforts. |
The team at domain.dot.net has been working with 2.0.X since the first alpha, and following the progress of the trunk. In our opinion this beta has the high quality of prior betas and we recommend it for non-critical systems immediately as your risk policy allows. We’re working on a more detailed analysis coming soon on some of the key improvements.
To download the code direct from the trunk use this SVN URL:
https://nhibernate.svn.sourceforge.net/svnroot/nhibernate
This is no minor update, as with this release they will align with the widely used and praised ‘Hibernate 3.2’ for Java. Here is a listing of the planned new features which are represented to varying degrees of complexness in this beta:
NHibernate 2.0.0
The upcoming NHibernate 2.0 release will add support for many more exciting features; some are ported from Hibernate 3.x, others are features unique to NHibernate.
Core
- Updated Interceptor functionalities to match those in Hibernate 3.2
- Support for SessionFactory events and listeners
- CriteriaTransformer allows one to clone and transform ICriteria
- Support for MultiCriteria; similar to MultiQuery implemented in NH1.2
- Support for the <join> element. It enables table-per-subclass mapping using a discriminator, or mapping a single entity from more than one tables
- StatelessSession provides an easier way to work with bulk operations
- Support for CacheMode allows one to have better control on how the session interacts with the second-level cache
- Implementation of query plan; NHibernate will parse named queries once at start-up time, thus improving performance
- Support of native ID generator for <idbag>
- Improved and more consistent syntax for configuration
- Other internal improvements
Sub-projects
- NHibernate.Linq (a LINQ provider for NHibernate)
- NHibernate.Statistics
NHibernate key features:
- Natural programming model – NHibernate supports natural OO idiom; inheritance, polymorphism, composition and the .NET collections framework, including generic collections.
- Native .NET – NHibernate API uses .NET conventions and idioms
- Support for fine-grained object models – a rich variety of mappings for collections and dependent objects
- No build-time bytecode enhancement – there’s no extra code generation or bytecode processing steps in your build procedure
- The query options – NHibernate addresses both sides of the problem; not only how to get objects into the database, but also how to get them out again
- Custom SQL – specify the exact SQL that NHibernate should use to persist your objects. Stored procedures are supported on Microsoft SQL Server.
- Support for “conversations” – NHibernate supports long-lived persistence contexts, detach/reattach of objects, and takes care of optimistic locking automatically
- Free/open source – NHibernate is licensed under the LGPL (Lesser GNU Public License)
Partial Listing of Key Contrib Work for NHibernate
NHibernate.Burrow
Burrow is a light weight middleware developed to support .Net applications using NHibernate (maybe also referred as NH in this article) as ORM framework.
Using Asp.net with NHibernate could be a challenge because of the fact that NHibernate is a stateful environment while Asp.net is a stateless framework. Burrow can help solve this conflict by providing advanced and smart session/transaction management and other facilitates.
Road Map of Burrow Wiki:
- Introduction - a brief introduction of Burrow
- Get Started – tells how to setup the Burrow framework.
- Burrow Conversation Explained - gives more detail about long conversation.
- StatefulField Attributes - about very useful Burrow.WebUtil attributes that can simplify states persistence for ASP.NET controls and pages
- FAQ – you know what it is.
Other Projects:
- Core Wiki – Click Here
|- NHibernate.Search
- NHibernate.Mapping.Attributes
- NHibernate.Validator
- NHibernate.Shards
- NHibernate.Burrow
- NHibernate.Caches.MemCache
- NHibernate.Caches.Prevalence
- NHibernate.Caches.SysCache
- NHibernate.Caches.SysCache2
- NHibernate.JetDriver
- NHibernate.Tasks
- NHibernate.Tool.hbm2net
- NHibernate.UserTypes.Oracle
- NHibernate.UserTypes.SqlTypes
- … and others
- SBN Trunk is:
NHIbernate is a project under sponsorship of Red Hat Middleware, LLC.
JBoss and Hibernate are registered trademarks
and servicemarks of Red Hat, Inc. All rights reserved.





6 Comments
Question: I’m unable to find NHibernate.Linq in the NHContrib (For the latest version of NH).
Any ideas?
Thank you – and great post/site!
Sure and thanks! I will create a package or a simple link and add it here for your (and others reference).
I’ll actually then ask Ayende if I can be a distribution point for perhaps builds he says are stable (and immediately I’ll list the new location). I just had to figure this out myself and I remember when he moved it from his experiments directory to NHContrib but I didn’t know it was not there..
I would say he is working on what could be the single most critical software component for getting .NET to not just keep up but finally take a small lead for a moment in time over our Java peers.
For us Linq (and really the functional language aspects of Expressions and the fantastic enhancements on delegates with Lambada Expressions) was a stroke of genious for Microsoft started way back with the List and foreach, find, etc…
We are obsessed with writing providers and indeed are writing up some abstractions to make it easier to manipulate the Expression tree.
For us it’s not just about ‘Linq to Data Source X’ but ‘Linq to Domain’ where domain is specific to an organization and is abstracting perhaps ten data sources… THAT is amazing for SOA where the API is all about say structured finance but it’s calling into WCF, MSMQ, MQSeries, etc. without any ‘technical’ API pollution.
Thoughts?
Get you that in a bit.
Thanks,
Damon
Excellent – I totally agree.
Thank you!
Hi Damon, any luck on the NHibernate.Linq for Beta 1 ?
I got back to Steve personally but still plan on posting a more comprehensive response.
Basically Linq to NHibernate is now working only off the trunk (last I checked) which is fine, however as beta 1 broke the previous stable Linq bits, it’s not a simple answer as to ‘what do I want to commit to if not the moving trunk code base’.
More soon. A lot more…
Damon
Can you correct this blog it was not Linq to Entities that received the no confidence vote but the ADO.NET Entity Framework, if you do not know the difference between the two you should not be posting negative hearsay on the subject
One Trackback/Pingback
[...] Learn more about NH 2.0 here [...]