我爱Aspx >> 数据库 >> 最佳实践:以不变架构应多变业务
图5 GuProposalService GuProposalServiceSpringImpl类图
ServiceManager.getGuProposalService().insert(guProposalDto);
首先通过ServiceManager类的get方法来获得该服务接口类,然后通过insert()接口方法完成投保单的保存。方法的具体实现是在服务接口实现类中完成的,系统编码中引用的是接口类,而接口的实现类是由SinoSoftFrame在运行期注入的。接口和实现类的对应关系通过配置文件App-prpall-service.xml定义。
● 持久层实现
持久层主要由两部分构成: 数据访问对象DAO接口及其实现、实体对象PO。业务层通过调用持久层的DAO完成业务对象的持久化(即保存到数据库中)。实体对象PO是和业务模型一致用以完成数据库操作的业务对象,在进行投保单保存时主要有以下实体对象: 投保单主表、投保人及被保险人对象、投保费用。
系统框架要求实体对象必须遵从如下要求: 每个实体对象都必须继承于自身的实体Base类(该实体Base类是通过工具自动生成的);为实体对象增加不需要持久化的扩展属性时,在实体对象中增加; 严格保持Base类与数据业务模型(即数据库结构)的一致。
Hibernate完成业务对象的持久化是通过hbm配置文件将对象属性和数据库表中的字段对应来自动完成的,因此配置文件hbm是不可缺少的(可以由工具自动生成)。
持久层DAO的设计模式和业务层类似,也是将接口和实现分开实现了持久层的解耦。接口类中定义了每个业务对象的持久化操作,实现类中实现了具体的持久化实现代码。通过持久层的解耦,有效地解除了应用系统对SinoSoftFrame中引用的持久层框架的依赖,同时更有效地支持了各种存储形式,包括自定义的存储方式。
通过类图可以看到,每个持久化对象都会对应一套DAO对象(该套DAO可以通过工具自动生成)。如果需要编写自定义的数据库操作,可以在DAO的接口和实现层中进行扩展(不需要修改DAOBase类)。可以看到,只需调用Dao层的insert方法即可将投保单持久化对象保存到数据库中。
Google代码搜索:漏洞的汇集?[04-21]
[技术文章]如何规划软件的逻辑层..[04-21]
如何使用BEA AquaLogic BPM Suit..[04-21]
Microsoft推出XQuery演示工具[04-21]
【技术文档】查找低劣的SQL方法[04-21]
Google员工揭密防止网站作弊技术..[04-21]
10个您应了解的ITIL事项[04-21]
50种方法巧妙优化你的SQL Server..[04-21]
关键数据库安全保护中的最快最可..[04-21]
主流数据库集群技术深入探讨[04-21]