`
aol_aog
  • 浏览: 16864 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

从ET2开发中领悟到的 续

 
阅读更多

1、DAO接口增、删、改操作针对每张表进行设计

2、检索单条记录详情也可以针对每张表进行设计,然后在业务层使用其他DAO接口进行组装成需要的领域对象(这里可以考虑缓存,这样就尽量避免多次访问数据库)。如果考虑到效率,也可以进行联合查询,特别是一对多和一对一的情况,对返回的记录进行组装得到需要的领域对象。

3、如果是针对单个数据库的系统,分页尽量在数据库中进行,所以进行表关联查询,同时需要返回次表的信息时,1)主表和次表是一对一或者多对一的关 系,那么直接返回次表信息;2)主表和次表是一对多的关系,则只返回主表的信息,次表信息,通过DAO接口重新一次SQL查询 。

4、对数据库进行更新的操作,一定需要将操作发生时的状态(可能包括很关键字段)作为条件进行更新,防止并发更新的情况发生。

5、设计领域对象时理清领域对象之间的关系和他们的业务操作,不太复杂的业务逻辑判断和操作尽量在领域对象中完成,如果业务比较复杂可以借助helper类来帮助完成业务运算,领域对象不完成持久化的工作,将持久化工作委托给外部业务类来进行。

6、所有常量,包括数据库中的状态、类型、标志等字段,使用单独的常量类或者枚举类来完成,任何地方都取其引用,不允许直接使用常量值进行逻辑判断,最好使用一个布尔方法在领域对象中完成判断。

7、状态变换比较复杂的系统,考虑使用状态模式来进行设计。

8、DAO接口中不进行任何数据库事务控制,事务代码全部根据业务规则在业务层中进行,所以最好使用AOP来完成事务(考虑Spring),在业务层中对只是查询的业务方法也开启只读事务,防止多表查询时其他操作可能改变数据库造成查询结果不一致。

9、设计一个Result类在业务层返回结果和出错信息,所以出错信息使用ResourceBoudle来读取外部配置信息。所有异常都在最后一级业务层中进行处理,例如daoException.

10、。。。。。。等待继续发现

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics