2018年8月

编程中的hydration是什么意思

经常能看到在一些书本和文章中写到hydration,这一单词单独去翻译为“水合”、“水合作用”等,但放在文章中又似乎读不同,难以理解。

通过查阅了更多的信息之后,hydration的大致意思基本了解了。

可以理解为对象提供水分,为什么对象呢?就是刚实例化的对象。并且我们最常见提到“水合”的地方就是刚从数据库或其他存储介质中取出数据填充到对象上。

那么这种一个已经在内存中实例化的对象,还没有包含任何数据,然后用数据(例如从数据库、网络、文件系统等获取的)填充到该对象内,这种行为成为hydration水合。

常见的一种水合方式就是序列化和反序列化了,如在PHP中对对象进行serializeunserialize,此时的反序列化==实例化+水合

单表继承(Single Table Inheritance)

将类的继承层次表示为单张数据表,这张表内含有每个类的所有字段

classInheritanceTableSketch.gif

关系数据库不支持继承,当对象映射到数据库时,我们必须考虑如何在关系数据表中良好的展示我们的对象继承结构。当对象映射到关系数据库时,在多张表中处理继承结构过程中,我们尝试着去尽量减少迅速增加的join查询。(参考类表查询)。单表继承将所有类的继承结构的所有字段映射到了一张表中。

类表继承(Class Table Inheritance)

表示类的继承层次结构,每个类都对应一张数据表
classInheritanceTableSketch.gif

对象关系阻抗不匹配的一个显著方面是由于关系数据库不支持继承。你想要数据库结构能够清晰的映射到对象,并想要在继承结构中可以任意链接。类表继承通过使用一个数据表对应一个类的方式来实现这样的目的。