Spring.NET企业架构实践(三)2012-07-31 博客园 刘冬.NETNhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(三)——持久层什么是持久层?先解释什么是持久,英文persistence,将内存中的数据固化,保持在物理储存设备中。然而在企业应用中,往往通过 关系型数据库来完成这一过程。那么持久层的定义是:相对于三层架构中的表示层、业务层而言,专门负责持久化数据的独立领域。设 计模式中的“单一职责”原则确定了分层的目的,说白了,持久层就是专门与数据库打交道的。如图1所示

图1在PetShop4.0中的DAL(数据库访问层)就是操作数据库的。在其DAL中,通过SQL语句返回DataReader,然后给Model对象赋值;在添加、 修改、删除操作中,通过Model对象的数据生成SQL语句,然后写入数据库。此时,我们能够看出每张表都用同样的操作。虽然PetShop4.0 使用SqlHelper封装数据库操作,但是却没有一个通用的CRUD封装。目前PetShop4.0每个表都对应各种的CRUD,这样就会出现大量重复的代 码。对于PetShop4.0的使用多钟数据库来言。对于每种数据库都要写一种DAL。这样数据库的可移植性就不强了。