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相关文章推荐
- Hibernate系列学习之映射持久化类--标识符生成策略
- hibernate中一对多映射(set集合中存放的原生数据类型,而不是实体)
- hibernate之实体类型到映射文件
- Hibernate基础学习之实体类(持久化类)的编写规则及相关操作(CRUD)
- hibernate3与实体类型无关的映射方式---动态模型(Dynamic Model)
- Hibernate深入学习(一):实体映射文件中的package,auto-import,dynamic-insert,dynamic-update用法
- J2EE系列之Hibernate4学习笔记(八)--Hibernate基本类型映射
- [原创]java WEB学习笔记77:Hibernate学习之路---Hibernate 版本 helloword 与 解析,.环境搭建,hibernate.cfg.xml文件及参数说明,持久化类,对象-关系映射文件.hbm.xml,Hibernate API (Configuration 类,SessionFactory 接口,Session 接口,Transaction(事务))
- 【Hibernate学习笔记】Hibernate的内置映射类型
- ssh学习之旅(2)--关于hibernate实体映射关联关系映射查询的解决方案-lazy属性惹的祸
- hibernate学习-实体类与数据库表映射 分类: Hibernate 2012-11-01 17:21 541人阅读 评论(0) 收藏 举报 1.根据实体类名获取表名 Map<String, A
- J2EE系列之Hibernate4学习笔记(九)--Hibernate集合类型映射
- Hibernate中实体类型(Entity Type)与值类型(Value Type)的概念分析
- 【Hibernate学习笔记】映射值类型集合
- 持久化API(JPA)系列(六)实体关系映射(ORM)之映射类型
- Struts2 学习系列 (3) 跳转类型与通配符映射
- Hibernate学习6—Hibernate 映射类型
- Hibernate映射枚举类型和实体类型的区别
- Struts2 学习系列 (3) 跳转类型与通配符映射
- hibernate实体类型映射文件