• 嵌入值和序列化LOB


    • Embedded Value
      • 把一个对象映射成另一个对象表中的若干字段.

       

        • OO系统中会有很多小对象(DataRange,Money).而作为表在DB中毫无意义.
        • 默认想法是把一个对象保存为一个表.
        • 但是,将这些小对象,映射为该对象所有者记录中的若干字段.
      • 运行机制
        • 可以看做一种特殊的依赖映射.该值对象是一个依赖者对象.
        • 由所有者完成对依赖者的加载和保存.
      • 使用时机
        • 简单的值对象.由于没有ID.所以更新时不需要标识映射来同步.所以不需要DB表来对应.
        • 一般,只用在简单的依赖者上.只在一对一关联关系时,才使用.或者依赖者数量很少且固定时.
        • 如果想在SQL查询中使用依赖者值时,需要使用它.
        • 对于复杂的依赖关系(巨大的对象子图),使用序列化LOB.
    • Serialized LOB
      • 序列化一个对象图中的对象到一个LOB中,并将该LOB存储在一个DB表的字段中.
        • 在对象模型中,会包含一些由小对象组成的复杂图.该结构中的信息不存在于对象中,而存在于它们之间的链接关系中.
        • 而在DB中,基本的方案是带有上级外键的组织结构表.但是这样造成了很多的链接.
        • 对象不需要被保存成相互关联的数据表行.还可以进行序列化.
      • 运行机制
        • 序列化方法
          • BLOB二进制
            • 由于多数平台提供了自动序列化对象图的能力.所以容易保存图.
            • 易于编程,并使用最小的空间.
            • 缺点是DB必须支持二进制Data类型.并且没有对象就不能重构对象图.不能做到偶尔查看字段来解出其意义.
            • 还会出现版本问题.如果修改了对象类.那么就会导致无法读出之前的序列化部分.
          • CLOB文本字符
            • 易读.意义明显.
            • 但会占用更多的空间.且需要专门的解析器.速度慢.
            • 这些缺点可以使用XML解决.但XMl加大了空间的利用.而压缩的话,又会影响可读性.
        • 应该保证除了LOB拥有者对象之外的其它对象,都不能访问到它.
      • 使用时机
        • 最大问题是不能使用SQL查询到它的结构.
        • 应确保序列化子图中的对象不会被SQL查询访问.
  • 相关阅读:
    Web server failed to start. Port 8080 was already in use.
    org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplic
    HttpClient测试框架
    Mock接口平台Moco学习
    自动化测试框架TestNG
    css常用记录...个人查看使用
    常用JS工具类 .....持续更新中 ...CV大法好
    element-upload覆盖默认行为(多个文件上传调用一次接口)
    基础术语理解
    MVC和MVVM设计模式简单理解
  • 原文地址:https://www.cnblogs.com/robyn/p/3524026.html
Copyright © 2020-2023  润新知