InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Fluent NHibernate

Posted by Hartmut Wilms on Aug 13, 2008

Sections
Architecture & Design,
Development,
Operations & Infrastructure
Topics
Data Access ,
.NET ,
Domain Specific Languages
Tags
ORM ,
nHibernate

Fluent NHibernate is an API for creating NHibernate mappings programmatically instead of XML configuration files. Its goal is to reduce the difficulties faced when incorporating NHibernate in a project by providing improved readability, testing capabilities, and compile time safety.

James Gregory, project owner, introduces Fluent NHibernate and raises his concerns about NHibernate’s XML configuration files:

[…] I think we all also have a bit of a dislike for the amount of XML you need to write to get your classes mapped; not only that, but also how the mappings are distinctly separate from the rest of your application. They’re often neglected and untested. One of the core tenets of the project is that we need a more succinct, readable, and testable way of writing your mappings.

In addition, Fluent NHibernate provides a fluent interfacePiers Cawley provides a good summary and explains that “client side complexity […] is reduced by moving object construction behind a thoughtful, humane interface”.

Fluent NHibernate reduces the complexity further by adhering to the convention over configuration principle, which means that the most common setup for any part of a mapping is chosen by default.

Besides compile time checking Fluent NHibernate adds to the robustness of your mappings by providing an API for testing. “We also want to help you verify that your mappings are set up properly, not just syntactically valid”, says James Gregory.

Last but not least Fluent NHibernate features a framework, which helps to setup a reference architecture and plays well with your IoC container of choice:

Our framework is a layer that sits on-top of the API to provide an even better experience. We’re looking to integrate with your favorite container, which will reduce the code you need to write to integrate NHibernate into your system. Then we’re going to tackle extensible conventions, which will allow you to specify your own implied conventions for your application. For example, if you’re always going to call your identifier “ID”, then why should you have to specify it every time? You shouldn’t!

Bobby Johnson gives a detailed step-by-step example of using Fluent NHibernate in his article “Skinning the Cat with Fluent NHibernate”.

No comments

Watch Thread Reply

Educational Content

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.