NHibernate使用的问题
--------------------------------------------------------------------------------------------------------
最近很多人问到NHibernate的使用问题,为此统一做一个回答:
1.分层,最好将领域模型与界面应用分开,不要将领域类和界面对象放一起使用,导致混乱。
2.配置文件,配置文件最好使用config.AddAssembly,AddClass来将领域模型、配置文件、NHibernate联系起来。然后才考虑如:AddXMLFile等的方法。
3.进行评估或者制作Demo的时候,可以比较灵活处理,如果引入正式的工程中,请为NHibernate建立一个Framework ,和你的其它Framework一起使用包括:Log、事务、消息等等。我将整理一个Framework,请大家下载自己研究。
4.涉及到大批量数据的时候,可以使用HQL,但最好不要将对象一个一个的导入进来,要考虑将对象的字段(包括ID)导入进来,因为生成一个对象将导致非常多的冗余,性能上也有一些问题。
5.承接4,最好自己根据MS提供的Data Application Access Block做一个自己的原生SQL执行Framework ,或者对批量数据都使用原生SQL来执行,只是要注意不要和Data系列的Reader、Table、Set联系太紧密,一般来说不要在界面层看到这些东西。
Framework要考虑如下几个问题:
1.封装有关Save、Load、Delete方法,所有领域对象都从它继承。
2.封装有关事务处理的部分
3.考虑对设计工具的支持
4.考虑如何自动生成NHibernate需要的配置文件,此时要使用属性
5.如果从数据库生成类与配置,要考虑使用表模式还是行模式。
--------------------------------------------------------------------------------------------------------
最近很多人问到NHibernate的使用问题,为此统一做一个回答:
1.分层,最好将领域模型与界面应用分开,不要将领域类和界面对象放一起使用,导致混乱。
2.配置文件,配置文件最好使用config.AddAssembly,AddClass来将领域模型、配置文件、NHibernate联系起来。然后才考虑如:AddXMLFile等的方法。
3.进行评估或者制作Demo的时候,可以比较灵活处理,如果引入正式的工程中,请为NHibernate建立一个Framework ,和你的其它Framework一起使用包括:Log、事务、消息等等。我将整理一个Framework,请大家下载自己研究。
4.涉及到大批量数据的时候,可以使用HQL,但最好不要将对象一个一个的导入进来,要考虑将对象的字段(包括ID)导入进来,因为生成一个对象将导致非常多的冗余,性能上也有一些问题。
5.承接4,最好自己根据MS提供的Data Application Access Block做一个自己的原生SQL执行Framework ,或者对批量数据都使用原生SQL来执行,只是要注意不要和Data系列的Reader、Table、Set联系太紧密,一般来说不要在界面层看到这些东西。
Framework要考虑如下几个问题:
1.封装有关Save、Load、Delete方法,所有领域对象都从它继承。
2.封装有关事务处理的部分
3.考虑对设计工具的支持
4.考虑如何自动生成NHibernate需要的配置文件,此时要使用属性
5.如果从数据库生成类与配置,要考虑使用表模式还是行模式。