一个如货币或日期范围这样的小而简单的对象,判定时并不根据标识ID。值对象通常规模小一些,类似于许多非纯粹面向对象程序设计语言中的原始类型。
运行机制
- 引用对象和值对象的关键区别在于判别两个对象是否相等的方法:
- 引用对象的判别通常根据内部标识,如OO语言中内建标识,或某种类型的ID;
- 值对象的判别需要判别对象中的属性。
- 许多程序语言不没有专门支持值对象的机制。
- 值对象不应作为完整记录而持久化,应当作为嵌入值或序列化LOB。
- 二进制序列化时,对值对象的序列化优化可以改善性能。
使用时机
某些事务的判别不是基于其标识时,可以采用值对象;