NHibernate的幾種查詢方式

NHibernate的幾種查詢方式

SQL:普通SQL查詢(也就是SQLServer,Oracle,Sybase等數據庫的查詢語句,建議使用基於TSQL-92)
核心對象:CreateSQLQuery
IList list = session.CreateSQLQuery(select * from TabUser).AddEntity(typeof(TabUser)).List();

HQL:Hibernate查詢
核心對象:CreateQuery
IList list = session.CreateQuery(“from TabUser t where t.id>:id”).SetString(“id”, “10”).List();

Criteria:標準或條件查詢,ICriteria有很多屬性和方法可供選擇,有利於構建動態運行時查詢,也就是說此方式可以構建很複雜的查詢。
核心對象:CreateCriteria
IList list = session.CreateCriteria(typeof(TabUser)).List();

Lambda:表達式查詢
在NHibernate 3.0以上版本,使用Lambdas強類型。
核心對象:QueryOver
IList list = isession.QueryOver(typeof(TabUser)).List();

Linq:Linq查詢
NHibernate 2 and 2.1: ISession.Linq
核心對象:Linq
IList list = from t in session.Linq() select t;

NHibernate 3.0: ISession.Query
核心對象:Query
IList list = from t in session.Query() select t;

Spring.NET:Spring.NET方式
using Spring.Dao;
using Spring.Data.NHibernate.Support;
核心對象:HibernateTemplate
IList list = HibernateTemplate.Find(hql);
注意此處的hql語句請參考上面的Hibernate查詢

注:HibernateTemplate不僅僅只有Find,還有各種Save,Update,Delete等等語句的用法。
同理ISession對象也有Save,Update,Delete等等語句的用法,只是要最後需要session.Flush()一下才能提交數據,當然這些已經是屬於數據庫的CRUD語句,已經超出此篇文章的範圍,故不在此累述。

版權所有,轉載請註明文章出處 http://blog/csdn.net/cadenzasolo

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章