Been poking around the web because I was curious as to why they called it that but haven't found anything yet. Anyone know?

(I checked the FAQ and it wasn't clear if questions on history/origins were OK to put here or not, but I figured it wouldn't be good on StackOverflow, feel free to start closing it if it is out of scope and I will delete.)

  • 2
    N stands for .NET I guess. See stackoverflow.com/q/1332147/995876 for hibernate – Esailija Jun 19 '13 at 13:22
  • @Esailija good find! I guess that is a good enough answer... the data 'hibernates' until you request it again... I guess finding the guy who named it that and asking him would be the only way to get a more solid answer – MetaGuru Jun 19 '13 at 13:27
  • history questions are sometimes on topic for Programmers. There are a number of meta discussions about the matter. Your question could be stronger by showing more research. – GlenH7 Jun 19 '13 at 15:34

Gavin King created Hibernate for Java back in 2001 as an alternative to EJBs. His project was later taken over/sponsored by JBoss, which is now part of Red Hat.

There was another alternative at the time called TopLink for Java, originally by Object People, then bought by BEA, and now owned by Oracle. Hibernate borrowed TopLink's concept of object/relational mapping (ORM) to simplify the translation of Java objects to relational database records and vice versa.

Anyhow, the idea is that often you need your data to go into stasis for an indefinite period of time--that is, until somebody needs it again. This is not the sort of thing you want to leave in volatile memory--you want it to be persistent.

This is what hibernation is all about. When a bear goes into hibernation in the winter, his bodily systems slow down to the point where they consume almost no energy--thus he doesn't have to do typical bear things like hunting. Hibernation is going into a sort of stasis until activity is required again.

So, when Gavin was looking for a name for his project, he came up with "Hibernate" as a fairly descriptive name. Hibernate was then ported to platforms other than Java, most notably to .NET. In order to avoid confusion with the original Hibernate (which is a Java tool) they called it nHibernate, with the "N" standing for .NET.


It's the .NET port of Hibernate. At least it started out as such.

It's a somewhat popular naming pattern for .NET ports of existing projects to just stick an "N" in front or a "#" in the back. E.g. NUnit, a port of JUnit (itself a port of SUnit). Noda Time, a port of Joda Time.

  • 3
    So... why is Hibernate called that? – Oded Jun 19 '13 at 13:22
  • 4
    Well... because ripping objects from an address space, putting them at rest in a database, and later reawakening them in a different process is rather like hibernating. I can't really think of a more directly applicable name. – Kilian Foth Jun 19 '13 at 13:30
  • 1
    @kilianFoth sounds more like kidnapping :-) – Dan Pichelman Jun 19 '13 at 14:00
  • 1
    @DanPichelman: Only if the database refuses to give the objects back to the application unless the application pays large amounts of money in cash. :P – FrustratedWithFormsDesigner Jun 19 '13 at 14:32
  • 1
    @FrustratedWithFormsDesigner I hate it when DBAs get all uppity like that.. – Jimmy Hoffa Jun 19 '13 at 14:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.