您的位置:首页 > 其它

Hibernate系列学习之映射持久化类--Hibernate中实体类型和值类型概念辨析

2017-02-07 21:35 337 查看

一、前言

在学习Hibernate的映射 持久化类部分时,遇到两个概念–实体类型、值类型,一直搞不明白,现在将自己的理解整理一下。

二、概念辨析

2.1前言

当查看域模型时,你将会注意到类之间的一个区别:有些类型看起来更为重要,它们表示了最重要的业务对象(这里的对象一词就是其本身的意思)。例子有Item、Category和User类:这些都是我们要尝试表示的真实环境中的实体。区域模型中呈现的其他类型,比如Address、String和Integer,看起来不那么重要。那么,究竟什么是实体类型,什么又是值类型呢,它们的区别是什么呢。

2.2实体类型

在这里,实体类型没有很严格的定义,下面是将实体类型的特点进行总结对实体类型做的一个笼统的概念定义:

有自己的标识、其实例具有来自许多其他实例的引用、并且拥有独立的生命周期,就称之为实体类型

2.3值类型

在这里,值类型没有很严格的定义,下面是将值类型的特点进行总结对值类型做的一个笼统的概念定义:

没有自己的标识、其实例只能被单个特定的实例所引用、并且生命周期依赖于引用它的那个实例,就称之为值类型

2.4二者的理解和辨析

2.4.1下面以一个原型图进行理解:

[b]2.4.1.1图解:[/b]



[b]2.4.1.2解析[/b]

现有三个实体类:Item、Bid、User,和一个值类型类。

显然物品类Item既可以被拍卖品类Bid引用,也可以被用户类User类引用,而用户地址只能被User类所引用,因为很显然Item和Bid类是没有Address的相关属性的。

2.2.2下面以一个表格进行横向辨析:

比较项实体类型值类型
对象中,是否存在用以标识该对象的属性(如果主键是复合主键,可能是多个),而该属性在数据库中有其对应的主键存在,而类中对应主键的属性,则用来标识对没有,因此对象本身没有用来标识对象的属性(但是该类可能会有专属的Table,只是Table中的主键,并不会对应到对象中的任一属性)
能否被一个以上的对象所引用能,被其他对象引用时,在数据库内通过外键来关联,也正因为可以被一个以上的对象所引用,因此要具备用来标识的属性
生命周期是否独立否,取决于所依赖的类

三、参考材料

http://blog.csdn.net/xxfigo/article/details/7384718
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐