嵌入值和序列化LOB
- Embedded Value
- 把一个对象映射成另一个对象表中的若干字段.
- OO系统中会有很多小对象(DataRange,Money).而作为表在DB中毫无意义.
- 默认想法是把一个对象保存为一个表.
- 但是,将这些小对象,映射为该对象所有者记录中的若干字段.
- 运行机制
- 可以看做一种特殊的依赖映射.该值对象是一个依赖者对象.
- 由所有者完成对依赖者的加载和保存.
- 使用时机
- 简单的值对象.由于没有ID.所以更新时不需要标识映射来同步.所以不需要DB表来对应.
- 一般,只用在简单的依赖者上.只在一对一关联关系时,才使用.或者依赖者数量很少且固定时.
- 如果想在SQL查询中使用依赖者值时,需要使用它.
- 对于复杂的依赖关系(巨大的对象子图),使用序列化LOB.
- Serialized LOB
- 序列化一个对象图中的对象到一个LOB中,并将该LOB存储在一个DB表的字段中.
- 在对象模型中,会包含一些由小对象组成的复杂图.该结构中的信息不存在于对象中,而存在于它们之间的链接关系中.
- 而在DB中,基本的方案是带有上级外键的组织结构表.但是这样造成了很多的链接.
- 对象不需要被保存成相互关联的数据表行.还可以进行序列化.
- 运行机制
- 序列化方法
- BLOB二进制
- 由于多数平台提供了自动序列化对象图的能力.所以容易保存图.
- 易于编程,并使用最小的空间.
- 缺点是DB必须支持二进制Data类型.并且没有对象就不能重构对象图.不能做到偶尔查看字段来解出其意义.
- 还会出现版本问题.如果修改了对象类.那么就会导致无法读出之前的序列化部分.
- CLOB文本字符
- 易读.意义明显.
- 但会占用更多的空间.且需要专门的解析器.速度慢.
- 这些缺点可以使用XML解决.但XMl加大了空间的利用.而压缩的话,又会影响可读性.
- BLOB二进制
- 应该保证除了LOB拥有者对象之外的其它对象,都不能访问到它.
- 序列化方法
- 使用时机
- 最大问题是不能使用SQL查询到它的结构.
- 应确保序列化子图中的对象不会被SQL查询访问.
- 序列化一个对象图中的对象到一个LOB中,并将该LOB存储在一个DB表的字段中.
嵌入值和序列化LOB的更多相关文章
- 《Entity Framework 6 Recipes》中文翻译系列 (10) -----第二章 实体数据建模基础之两实体间Is-a和Has-a关系建模、嵌入值映射
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 2-11 两实体间Is-a和Has-a关系建模 问题 你有两张有Is-a和Has-a ...
- 从头认识Spring-1.14 SpEl表达式(1)-简单介绍与嵌入值
这一章节我们来讨论一下SpEl表达式的简单介绍与嵌入值. 1.SpEl表达式简单介绍 Spring Excpression Language (SpEL)语言支持在执行时操作和查询对象 事实上就是在执 ...
- Newtonsoft.Json null值不序列化
如果对当前序列化的实体全部生效的话使用如下: var jSetting = new JsonSerializerSettings {NullValueHandling = NullValueHandl ...
- SpringBoot中LocalDatetime作为参数和返回值的序列化问题
欢迎访问我的个人网站 https://www.zhoutao123.com 本文原文地址 https://www.zhoutao123.com/#/blog/article/59 LocalDatet ...
- 应用程序框架实战十六:DDD分层架构之值对象(介绍篇)
前面介绍了DDD分层架构的实体,并完成了实体层超类型的开发,同时提供了验证方面的支持.本篇将介绍另一个重要的构造块——值对象,它是聚合中的主要成分. 如果说你已经在使用DDD分层架构,但你却从来没有使 ...
- DDD分层架构之值对象(介绍篇)
DDD分层架构之值对象(介绍篇) 前面介绍了DDD分层架构的实体,并完成了实体层超类型的开发,同时提供了验证方面的支持.本篇将介绍另一个重要的构造块——值对象,它是聚合中的主要成分. 如果说你已经在使 ...
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目
ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理(序列化为 ...
- Newtonsoft.Json高级用法 1.忽略某些属性 2.默认值的处理 3.空值的处理 4.支持非公共成员 5.日期处理 6.自定义序列化的字段名称
手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...
- redisTemplate 键值序列化策略
redisTemplate 键值序列化策略 RedisSerializer<T> StringRedisSerializer JdkSerializationRedisSerializer ...
随机推荐
- TP复习11
## ThinkPHP 3.1.2 模板中的基本语法#讲师:赵桐正微博:http://weibo.com/zhaotongzheng 本节课大纲:一.导入CSS和JS文件 1.css link js ...
- 通过Javascript模拟登陆Windows认证的网站
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>模拟登陆</title ...
- Oracle中关于清除数据和释放表空间
一.表的重命名 flashback table test2 to before drop rename to test3;--[to test3]将表重命名 drop table test3 purg ...
- CentOS安装某个命令的办法如locate
在Linux使用命令时,有时候因为系统精简的原因,某些命令可能没有安装locate包,例如你要输入的命令是locate 发现没有该命令,修复办法如下: 一.使用如下命令查询缺失命令的包名 #yum l ...
- C++字符串处理封装类String
概述 C++在处理字符串时相对于python等脚本语言并没有什么优势,下面将常用的字符串处理函数封装成一个String工具类,方便以后使用,后期还会对该类进行扩充,下面是具体的实现: // Strin ...
- iOS10 资料汇总:值得回看的 10 篇 iOS 热文
本文精选了 iOS大全 9月份的10篇热门文章.其中有软件推荐.技术分享及iOS10.Xcode8新特性等. 注:以下文章,点击标题即可阅读 <兼容iOS 10 资料整理笔记> 本文整理i ...
- SpringMVC上传(通过物理路径)
内容来源:http://blog.csdn.net/kouwoo/article/details/40507565 一.配置文件:SpringMVC 用的是 的MultipartFile来进行文件上传 ...
- 沈逸老师PHP魔鬼特训笔记(6)--巫术与骨架
PHP最牛逼的特性之一除了懒人函数,还有一些魔法函数. 首先我们来认识下__tostring,通过一个巫术方法,我们吧实例转化过后的类,直接当字符串输出.结合我们前面所做的功能,我们在类里面加上这个函 ...
- TFS 2010 使用手册(三)权限管理
本文参考了 蔚蓝的宁静 http://www.cnblogs.com/tymo/archive/2011/03/21/1990550.html 等文章. 1.权限说明 1.1 权限关联 TFS的权限与 ...
- 【Mood-4】心静是一门艺术
到现在工作还没有着落,心里面反而比以前平静,以前也知道自己的水平 属于一瓶不满,半瓶咣当的那种情况,但是那时候的自己总是觉得自己的综合水平可能会弥补一下自己在技术上的缺失,但是,现在看来,太过于自信, ...