nhibernate source code analyzed (abstract classes in nhibernate-2.0)
看了DLL命名空間兄弟翻譯的Nhibernate教程,仍是一頭霧水,因為沒有一個完整的實例作為參照,比較抽象。有人說用單元測試的方式來學(xué)習(xí),不失為一種好方法,我的想法是如果要更好更系統(tǒng)的學(xué)習(xí)這個框架,分析其源代碼是最本質(zhì)的解決方法,簡單看了一下nhibernate-2.0的源碼,要讀懂別人的Code,真不是一件容易的事情,就像一堆亂麻,根本不知道如何下手。先生成個類關(guān)系圖:
關(guān)系圖太大了,以致顯示的很小。
分析下主要的抽象類:
1.JoinFragment - 聲明SQL連接的抽象類
2.Constraint - 描述數(shù)據(jù)庫中關(guān)系約束的基類,實現(xiàn)IRelationalModel接口.
3.接口IQuery-NHibernate查詢面向?qū)ο竺枋鼋涌冢瑥腎Session.CreateQuery()可以獲得接口實例
4.AbstractQueryImpl-IQuery的抽象實現(xiàn)
5.AbstractType - 實現(xiàn)IType接口的抽象基類
6.SqlBaseBuilder-全部SqlBuilders類的抽象基類
7.ScheduledEntityAction - 在fulsh的時候執(zhí)行一個實體計劃動作的抽象基類
8.EnumStringType-映射枚舉類型成為DbType.String類型的抽象基類
9.ValueTypeType-ValueType的超級類
10.NullableType-映射屬性到一個列,這個列可以允許存儲nulls
11.CollectionType- 映射集合類的抽象基類
12.ImmutableType-能夠存儲null的固有類性的超級類
以后會根據(jù)這些基類,逐漸學(xué)習(xí)一下其實現(xiàn)類。從而達到學(xué)習(xí)nhibernate.
關(guān)系圖太大了,以致顯示的很小。
分析下主要的抽象類:
1.JoinFragment - 聲明SQL連接的抽象類
2.Constraint - 描述數(shù)據(jù)庫中關(guān)系約束的基類,實現(xiàn)IRelationalModel接口.
3.接口IQuery-NHibernate查詢面向?qū)ο竺枋鼋涌冢瑥腎Session.CreateQuery()可以獲得接口實例
4.AbstractQueryImpl-IQuery的抽象實現(xiàn)
5.AbstractType - 實現(xiàn)IType接口的抽象基類
6.SqlBaseBuilder-全部SqlBuilders類的抽象基類
7.ScheduledEntityAction - 在fulsh的時候執(zhí)行一個實體計劃動作的抽象基類
8.EnumStringType-映射枚舉類型成為DbType.String類型的抽象基類
9.ValueTypeType-ValueType的超級類
10.NullableType-映射屬性到一個列,這個列可以允許存儲nulls
11.CollectionType- 映射集合類的抽象基類
12.ImmutableType-能夠存儲null的固有類性的超級類
以后會根據(jù)這些基類,逐漸學(xué)習(xí)一下其實現(xiàn)類。從而達到學(xué)習(xí)nhibernate.
作者:jillzhang
出處:http://jillzhang.cnblogs.com/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權(quán)利。
出處:http://jillzhang.cnblogs.com/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權(quán)利。

浙公網(wǎng)安備 33010602011771號