zoukankan      html  css  js  c++  java
  • 关于Value Object判断的心得

    值类型没有标识,只记录其他类值,所有属性都是只读,只能通过new来构造新的对象

    VALUE OBJECT 的设计

    包括共享和复制。 FLYWEIGHT(享元)模式可以实现共享VALUE OBJECT

    共享和复制的使用

    以下情况使用共享

    1)节省数据库空间或减少对象数量是关键要求时

    2)当通信开销很低时(中央服务器)

    3)共享对象被严格限定不可变的时候

     

    如果:用户中有对象:联系地址,而订单中有用户对象,并且要记下用户究竟将订单送到哪个地址上,此时,联系地址的ID就有标识的意义,所以这个时候地址就成了实体了。

    总之,实体和值对象在不同的项目中(甚至是同一项目的不同阶段) ,都是会转化的,转化的依据就是“需求”。

    实体类型(Entity Type)与值类型(Value Type)定义对照表
    比较特性 实体类型(Entity Type) 值类型(Value Type)
    对象中,是否存在用以标识该对象的属性(如果主键是复合主键,可能是多个),而该属性在数据库中有其对应的主键。 存在,而类中对应主键的属性,则用来标识对象。 没有,因此对象本身没有用来标识对象的属性(但是该类可能会有专属的Table,只是Table中的主键,并不会对应到对象中的任一属性。)
    能否被一个以上的对象所引用 能,被其他对象引用时,在数据库内通过外键来关联,也正因为可以被一个以上的对象所引用,因此要具备用来标识的属性。 否。
    生命周期 可独立自主 取决于所依赖的类
     
  • 相关阅读:
    背景(北极狐)
    【面试】java基础
    C#分享海报生成
    jetson nano 4gb记录
    jetson nano 2gb相关问题
    分布式系列-分布式ID
    Mybatis-Plus 多租户模式忽略某个方法
    IDEA 集成 Docker 插件实现一键远程部署 SpringBoot 应用,无需三方依赖,开源微服务全栈有来商城线上部署方式
    《将博客搬至CSDN》
    elk收集docker容器的json格式日志
  • 原文地址:https://www.cnblogs.com/yeagen/p/2709483.html
Copyright © 2011-2022 走看看