ORM(Object Relational Mapping)---是一種為了解決面向對象與關系型數據庫存在的互不匹配的現象的技術。簡單說:ORM是通過使用描述對象和數據庫之間映射的元數據,將Java程序中的對象自動持久化到關系數據中。本質上就是將數據從一種形式轉換到另外一種形式。
NHibernate是一個面向.NET環境的對象/關系數據庫映射工具。對象/關系數據庫映射(object/relational mapping (ORM))這個術語表示一種技術,用來把對象模型表示的對象映射到基于SQL的關系模型數據結構中去。 NHibernate不僅僅管理.NET類到數據庫表的映射(包括.NET 數據類型到SQL數據類型的映射),還提供數據查詢和獲取數據的方法,可以大幅度減少開發時人工使用SQL和ADO.NET處理數據的時間。NHibernate的目標是對于開發者通常的數據持久化相關的編程任務,解放其中的95%。對于以數據為中心的程序來說,它們往往只在數據庫中使用存儲過程來實現商業邏輯,NHibernate可能不是最好的解決方案;對于那些在基于.NET的中間層應用中,它們實現面向對象的業務模型和商業邏輯的應用,NHibernate是最有用的。不管怎樣,NHibernate一定可以幫助你消除或者包裝那些針對特定廠商的SQL代碼,并且幫你把結果集從表格式的表示形式轉換到一系列的對象去。
Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了輕量級的對象封裝,提供HQL查詢語言,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。使用Hibernate,必須為配置映射文件ClassMapping File和Configuration File,現在市場上提供了諸多Hibernate代碼生成工具,比如:XDoclet,以及Hibernate官方自帶的sechmaExport工具。然而它們都有如下的缺點:僅提供一些基本的輸入模版,用戶仍需要時間進行配置和修改;沒有提供自動的持久類以及InvokeBean的代碼生成;不支持圖形界面;不支持對HibernateTestCase的代碼生成。
正如其他的ORM工具,Hibernate同樣需要元數據來控制在不同數據表達形式之間的轉化. 在Hibernate 2.x里,多數情況下表示映射關系的元數據保存在XML文本文件中. 還有一種方式就是Xdoclet,它可以在編譯時利用Javadoc中的源碼注釋信息來進行預處理. 現在新的JDK標準(JDK1.5以上)也支持類似的注解功能,但相比之下很多工具對此提供了更強大更好用的支持. 以IntelliJ IDEA和Eclipse為例,這些IDE工具為JDK 5.0注解功能提供了自動完成和語法高亮功能. 注解被直接編譯到字節碼里,并 在運行時(對于Hibernate來講就是啟動的時候)通過反射讀取這些注解, 因此外部XML文件就不再需要了。
Hibernate使用DatachedCriteria分頁關聯查詢以及去除重復,近來項目中用到DatachedCriteria做分頁,涉及到關聯查詢產生的重復記錄問題。
Hibernate - 符合Java習慣的關系數據庫持久化。
Hibernate - 符合Java習慣的關系數據庫持久化。