嵌入值和序列化LOB

时间:2022-09-10 16:15:10
  • Embedded Value
    • 把一个对象映射成另一个对象表中的若干字段.

    嵌入值和序列化LOB

      • OO系统中会有很多小对象(DataRange,Money).而作为表在DB中毫无意义.
      • 默认想法是把一个对象保存为一个表.
      • 但是,将这些小对象,映射为该对象所有者记录中的若干字段.
    • 运行机制
      • 可以看做一种特殊的依赖映射.该值对象是一个依赖者对象.
      • 由所有者完成对依赖者的加载和保存.
    • 使用时机
      • 简单的值对象.由于没有ID.所以更新时不需要标识映射来同步.所以不需要DB表来对应.
      • 一般,只用在简单的依赖者上.只在一对一关联关系时,才使用.或者依赖者数量很少且固定时.
      • 如果想在SQL查询中使用依赖者值时,需要使用它.
      • 对于复杂的依赖关系(巨大的对象子图),使用序列化LOB.
  • Serialized LOB
    • 序列化一个对象图中的对象到一个LOB中,并将该LOB存储在一个DB表的字段中.
      • 嵌入值和序列化LOB
      • 在对象模型中,会包含一些由小对象组成的复杂图.该结构中的信息不存在于对象中,而存在于它们之间的链接关系中.
      • 而在DB中,基本的方案是带有上级外键的组织结构表.但是这样造成了很多的链接.
      • 对象不需要被保存成相互关联的数据表行.还可以进行序列化.
    • 运行机制
      • 序列化方法
        • BLOB二进制
          • 由于多数平台提供了自动序列化对象图的能力.所以容易保存图.
          • 易于编程,并使用最小的空间.
          • 缺点是DB必须支持二进制Data类型.并且没有对象就不能重构对象图.不能做到偶尔查看字段来解出其意义.
          • 还会出现版本问题.如果修改了对象类.那么就会导致无法读出之前的序列化部分.
        • CLOB文本字符
          • 易读.意义明显.
          • 但会占用更多的空间.且需要专门的解析器.速度慢.
          • 这些缺点可以使用XML解决.但XMl加大了空间的利用.而压缩的话,又会影响可读性.
      • 应该保证除了LOB拥有者对象之外的其它对象,都不能访问到它.
    • 使用时机
      • 最大问题是不能使用SQL查询到它的结构.
      • 应确保序列化子图中的对象不会被SQL查询访问.

嵌入值和序列化LOB的更多相关文章

  1. 《Entity Framework 6 Recipes》中文翻译系列 (10) -----第二章 实体数据建模基础之两实体间Is-a和Has-a关系建模、嵌入值映射

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 2-11 两实体间Is-a和Has-a关系建模 问题 你有两张有Is-a和Has-a ...

  2. 从头认识Spring-1&period;14 SpEl表达式(1)-简单介绍与嵌入值

    这一章节我们来讨论一下SpEl表达式的简单介绍与嵌入值. 1.SpEl表达式简单介绍 Spring Excpression Language (SpEL)语言支持在执行时操作和查询对象 事实上就是在执 ...

  3. Newtonsoft&period;Json null值不序列化

    如果对当前序列化的实体全部生效的话使用如下: var jSetting = new JsonSerializerSettings {NullValueHandling = NullValueHandl ...

  4. SpringBoot中LocalDatetime作为参数和返回值的序列化问题

    欢迎访问我的个人网站 https://www.zhoutao123.com 本文原文地址 https://www.zhoutao123.com/#/blog/article/59 LocalDatet ...

  5. 应用程序框架实战十六&colon;DDD分层架构之值对象(介绍篇)

    前面介绍了DDD分层架构的实体,并完成了实体层超类型的开发,同时提供了验证方面的支持.本篇将介绍另一个重要的构造块——值对象,它是聚合中的主要成分. 如果说你已经在使用DDD分层架构,但你却从来没有使 ...

  6. DDD分层架构之值对象(介绍篇)

    DDD分层架构之值对象(介绍篇) 前面介绍了DDD分层架构的实体,并完成了实体层超类型的开发,同时提供了验证方面的支持.本篇将介绍另一个重要的构造块——值对象,它是聚合中的主要成分. 如果说你已经在使 ...

  7. ASP&period;NET MVC WebApi 返回数据类型序列化控制(json&comma;xml&rpar; 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C&num; 往线程里传参数的方法总结 TCP&sol;IP 协议 用C&num;&plus;Selenium&plus;ChromeDriver 生成我的咕咚跑步路线地图 &lpar;转&rpar;值得学习百度开源70&plus;项目

    ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml)   我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理(序列化为 ...

  8. Newtonsoft&period;Json高级用法 1&period;忽略某些属性 2&period;默认值的处理 3&period;空值的处理 4&period;支持非公共成员 5&period;日期处理 6&period;自定义序列化的字段名称

    手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...

  9. redisTemplate 键值序列化策略

    redisTemplate 键值序列化策略 RedisSerializer<T> StringRedisSerializer JdkSerializationRedisSerializer ...

随机推荐

  1. &lbrack;HTML&sol;Javascript&rsqb; JS判断IE浏览器各版本

    代码参考: function isLowIEVersion() { var browser = navigator.appName var b_version = navigator.appVersi ...

  2. CSS 性能

    http://boagworld.com/dev/why-you-should-care-about-css-page-performance/ http://css-tricks.com/effic ...

  3. 2011 wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容) 实例介绍

    首先说几个最常用的关键字,“eq” 和 “==”等同,可以使用 “and” 表示并且,“or”表示或者.“!" 和 "not” 都表示取反. 一.针对wireshark最常用的自然 ...

  4. java&period;lang&period;reflection打印一个类的全部信息

    package com.ljy.chapter5; import java.lang.reflect.Constructor; import java.lang.reflect.Field; impo ...

  5. &lbrack;转&rsqb;Xcode的重构功能

    Xcode提供了以下几个重构功能: Rename Extract Create Superclass Move Up Move Down Encapsulate 在菜单栏中的位置如下图: 在代码区里直 ...

  6. mybatis 调用mysql存储过程 带输出输入参数

    http://lohasle.iteye.com/blog/1669879 存储过程都是一样的,只是根据自己的喜好,可以用MAP或者JAVABEAN传递参数. -- ----------------- ...

  7. Android 实时文件夹

    实时文件夹是一种用来显示由某个ContentProvider提供的数据信息的桌面组件.要创建一个实时文件夹,必须要有两个方面的支持. 1,要定义一个用来创建实时文件夹的Activity. 2,所指定数 ...

  8. 复杂度定义 The Definition of Complexity

    The upper bound   Big-O: Definition: f(n) is in O(g(n)) if there are constants c0 and N0 such that f ...

  9. javaean&lpar;web作业&rpar;

    javabean简介: javabean是java语言开发的可重用组件,在jsp中使用javabean可以减少代码的重复量,使代码简洁. 他的优点: 1.可将HTML和Java代码分离,这主要是为了日 ...

  10. Tensorflow实现稀疏自动编码(SAE)

    1.概述 人在获取图像时,并不是像计算机逐个像素去读,一般是扫一眼物体,大致能得到需要的信息,如形状,颜色,特征.怎么让机器也有这项能力呢,稀疏编码来了. 定义: 稀疏自编码器(Sparse Auto ...