Nhibernate
Download
1 / 92

NHibernate - PowerPoint PPT Presentation


  • 109 Views
  • Uploaded on
  • Presentation posted in: General

NHibernate. Object/Relational Persistence for .NET. A little bit of background information…. .NET port of the Hibernate project (Java). Mature architecture and proven c oncepts, already in use in many enterprise Java applications. Already quite popular in the .NET world as well.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha

Download Presentation

NHibernate

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


NHibernate

Object/Relational Persistence for .NET


A little bit of background information…


.NET port of the Hibernate project (Java)


Mature architecture and proven

concepts, already in use in many

enterprise Java applications


Already quite popular in the .NET world as well


Popularity seems to be increasing :)


General Philosophy Of NHibernate


It’s all about POCO


Should work on most databases


As few constraints on your code as possible


Full OO support: inheritance, polymorphism, composition, single-valued and many-valued associations


Maximize performance and flexibility


Keep your code clean


Strong Points


Ideally suited for OLTP scenarios (web applications, service layers, …)


Database independence


Rich feature set


Mature


Extensible architecture


Large, active, helpful and growing user base


Plenty of articles, blog posts and documentation available


It’s Open Source (LGPL)!


Weak Points


Not suited (at all) for bulk data processing


No code generation, and no designer support either


Bad reputation in some companies due to

lazy coding ( = abuse of lazy loading )


Plenty of outdated articles, blog posts and documentation available


It’s Open Source!

(some companies just don’t like that)


Let’s look at some of the things we can do with NHibernate…


Transitive Persistence


Managing associations between classes in a transparent manner


Allows you to persist object graphs with one instruction


Needs to be configured for each association

=> fine-grained control over cascade settings


Hold on… why was every member in the Order

class virtual?


I wouldn’t want to debug that either :)


Storing data in the database in an easy manner is great and all, but what about getting it out again?


Querying with NHibernate


Hibernate Query Language


It’s an Object Oriented query language


Criteria API


Makes it easier to compose queries dynamically from code.


LINQ… still not fully supported


Wouldn’t it be great if we could execute multiple queries in only one database roundtrip?


Future Queries


Can we efficiently update multiple records in one roundtrip as well?


As of NHibernate 2.1, we can do this with some new HQL statements


Data Modification With HQL


What about caching? Do we need to do that manually?


Of course not :)


Second Level Cache


Second Level Cache data is available to

allsessions


We can cache entity instances…


But we can also cache the results of queries…


This is ideal for static (reference) data or even data that doesn’t change frequently


How does the cache deal with modified data, though?


We’ll update the database and the cache


NHibernate will never cache anything in the Second Level Cache automatically


It needs to be configured on a per-entity and per-query basis


All the caching power you want, without having to pollute your code


Only use this for data that doesn’t change frequently though


But where is the cache’s data stored?


That’s up to you… multiple providers are available: ASP.NET cache, MemCached, Velocity, Prevalence, …


At this point, I’m almost running out of time and there is a lot more interesting stuff that we won’t get to cover.


Like optimistic concurrency strategies…


Or pessimistic locking strategies…


Or the various identifier strategies…


Or the various inheritance strategies…


Or how automatic dirty tracking works…


Or how you can implement your own dirty tracking…


Or custom user types…


Or how to deal with entities that were detached from the session…


Or the generation of DDL scripts, for your specific database…


Or the various mapping strategies for complex domain models…


We didn’t cover any of the many extensibility points either…


Maybe some other time :)


If you want to learn more, be sure to visit http://nhforge.org


Oh, and check out my blog if you liked this presentation: http://davybrion.com


Questions?


  • Login