java - 面向对象语言python - 面向对象语言有哪些




水合物体意味着什么? (2)

当有人谈论保湿物体时,这意味着什么?

我在Web上看到一个名为Hydrate的Java项目,它可以在不同表示(RDMS到OOPS到XML)之间转换数据。 这是对象水合的一般意义吗? 在表示之间转换数据? 它是否意味着从存储的表示重构对象层次?


关于更通用的术语水合物

为对象提供水分是将存在于内存中的对象包含在内,该对象尚未包含任何域数据(“真实”数据),然后使用域数据填充它(例如从数据库,网络或文件系统)。

从Erick Robertson对这个答案的评论:

反序列化==实例化+水化

如果您不需要担心性能下降的问题,而且您也没有调试数据访问API内部的性能优化,那么您可能不需要明确处理水合作用。 你通常会使用deserialization所以你可以写更少的代码。 有些数据访问API不提供此选项,在这些情况下,您还必须自己明确调用水合步骤。

有关Hydration概念的更多细节,请参阅Erick Robertson在同一问题上的回答 。

关于称为水合物的Java项目

你特别询问了这个框架,所以我研究了它。

尽我所知,我不认为这个项目在一般意义上使用了“水合物”这个词。 我将它看作是“序列化”的近似同义词。 如上所述,这种用法并不完全准确:

请参阅: http://en.wikipedia.org/wiki/Serializationhttp://en.wikipedia.org/wiki/Serialization

将数据结构或对象状态转换为可以在相同或其他计算机环境中存储和重构的格式。

我无法直接在Hydrate FAQ上找到他们名字背后的原因,但我得到了他们意图的线索。 我认为他们选择了“Hydrate”这个名称,因为该库的用途与流行的类似Hibernate框架类似,但它的设计思路完全相反。

大多数ORM,包括Hibernate,都采用内存中面向对象模型的方法,数据库需要考虑。 Hydrate库改为采用面向数据库模式的方法,保留关系数据结构并让程序更清楚地工作。

隐喻地说,仍然是关于这个图书馆的名字: 水合物就像“让东西准备好使用”(如重新水合干燥食品 )。 这与Hibernate的隐喻相反,它更像是“冬天放些东西”(比如动物冬眠 )。

就我所知,命名图书馆水合物的决定并不涉及通用计算机编程术语“水合物”。

当使用通用计算机编程术语“水合物”时,性能优化通常是动机(或调试现有优化)。 即使该库支持对数据填充对象的时间和方式进行细粒度控制,时间和性能似乎也不是名称或库功能的主要动机。 该库似乎更关心启用端到端映射和模式保存。


尽管Merlyn提到的这种语言有点多余,但根据我的经验, 它只涉及填充/填充对象,而不是实例化/创建对象,所以在需要精确时它是一个有用的词。





oop