总结: 设计实体 和 ormapping 的思路
来源:互联网 发布:js 9mm冲锋枪 编辑:程序博客网 时间:2024/05/28 05:14
1. 抽象实体
2. 抽象关系, 关系必须要含有返回对象 , 注意区分是否是自关系
3. 重新整理返回对象, 可以考虑把List<实体> 变成 Map<实体 > ,可以考虑LIst<新实体> 变成 List<自实体>
3.0 搞两个返回结果一样,但函数名不一样的关系是最不敢想的
LayoutIndex material setCurrentMaterial() List<Material> setHistoryMaterials()
3.1
3.1.把List<业务实体> 整个抽象为 设计实体来考虑;
3.1.1 设计实体的 immutable 可以随便定义
3.2 查看是否引入非 外部实体外键属性.例如: 自实体还需要考虑,由于新增了一列非上游实体属性 (比如 ad material, material 的getHIstoryMaterial在自实体上增加了一个属性, 就影响到了上游和此实体的关系含义)<>
3.3 material List<material> getHIstoryMaterials List<historyMaterial> getHIstoryMaterials
是否应该将原有实体拆成两个实体 ; 物料编辑本来是没有历史,现在有历史,有历史的部分其实是 内容, 编辑者 ,位置;
3.4 一个物料单元,有三个位置, 一个位置有一个now物料 ;现在将 位置变成基本实体组合到物料上 叫做物料; 其实是 物料位置;;
现在呢,一个位置上要有多个历史物料;; 但问题在于 实体已经将位置和物料死板的绑定了,一个位置一个物料;;
<layoutindex,material > getMaterials() ;
现在又要增加一个历史
Map <Date ,Map <layoutIndex, material>> getHistoryMaterials() ;
有Map的, 1侧就不允许有Set方法,不然就不可能1对1了;
设计关系 get都无所谓,但是如果是set,就很容易违背了当初设定实体关系的含义;;
4. 拆分实体原则:
Ad
Map <layoutindex,material > getMaterials() ;
Map <Date ,Map <layoutIndex,materials>> getHistoryMaterials() ;
出现这么复杂的关系的时候,就需要考虑是否有必要拆分实体了 ;
Date 是时间, 不好拆分含义,顶多是历史物料;;
把 layoutIndex 拆分出来;;
Map <Date ,Map <layoutIndex, materials>> getHistoryMaterials() ;
拆分 LayoutIndex
这样
ad LayoutIndex <LayoutIndex ,LayoutIndex> get
LayoutIndex material setCurrentMaterial() List<Material> setHistoryMaterials() 或者 Map<Date ,Material > getHistoryMaterials()
从 Map <layoutIndex ,Map <Date, materials>> 变成 Map<Date ,Material >
4 . 设计ormapping , List<实体 > get实体 ,可以新增关系类, 可以在原有实体上关联 ,可以用@where ,可以变成Map<xxx ,List<实体> >
误区,跨实体考虑关系,设计ormapping :
Ad实体下的历史关系Map<Date,Material> getHistoryDeniedReasons(){ } //这个设计是错的,因为你报错的是Ad下的所有物料解决历史;但不是一个物料ID
就必须只能通过关系表来实现ormapping了;如果不通过关系表,而是把date映射到Material实体中,那么一个material只能有一个历史Date ;
这个关系无法表达物料的历史,原因, 这个关系上只能获取某个时间下的某个物料信息; 只能查看到多个时间下的多个物料;; 并不是一个物料的历史;;
只能知道某个时刻的物料id, 不能知道
- 总结: 设计实体 和 ormapping 的思路
- ormapping框架和jdbc的比较
- 架构设计和技术选型的思路总结
- 架构设计和技术选型的思路总结
- 数据库的设计思路和原则
- 实体类的设计
- 淘宝的KV存储系统的设计思路总结-tair系统
- 淘宝的KV存储系统的设计思路总结-tair系统
- 淘宝的KV存储系统的设计思路总结-tair系统
- 实体设计-何时需要新的实体?
- 电子商务系统的商品实体分析和设计
- 电子商务系统的商品实体分析和设计
- 电子商务系统的商品实体分析和设计
- 关于Activity和Task的设计思路和方法
- [转]关于Activity和Task的设计思路和方法
- 关于Activity和Task的设计思路和方法
- 转]关于Activity和Task的设计思路和方法
- 关于Activity和Task的设计思路和方法
- php中防止sql注入攻击的方法
- 线性代基础理论:向量
- 分享8年开发经验,浅谈程序员职业规划
- PHP中SmartTemplate引擎学习
- Wix打包系列(一)如何使用wix制作安装程序
- 总结: 设计实体 和 ormapping 的思路
- Wix打包系列(二)用户界面和本地化操作
- GDI+的最初配置(VS2010)
- Aptana Studio 3的安装配置和使用教程
- hashCode与equals的区别与联系
- wcf 元数据的发布
- (二十四)解释器模式详解
- Wix打包系列(三)自定义Action(Custom Action)
- 十年经验-给程序员小弟弟小妹妹们的一些总结性忠告(转)