3.5.1 实体和值类型

来源:互联网 发布:国产自主三维软件 编辑:程序博客网 时间:2024/05/21 07:07

这里给我们展示了一个在ORM中重要的区别。在Java中,所有的类都是等价的:所有的对象都有自己的标识和生命周期,所有类的势力都是通过引用传递。只有原始类型通过值传递。

我们建议设计比数据表更多的持久化类。表中的一行可以由多个对象来表示。因为数据库标识使用主键来表示的,而许多持久化类并不拥有属于自己的标识。因此在一些持久化类中,持久化机制实现了值传递的语义。这些对象的其中一个拥有属于自身的标识,而其他对象依赖于它。

Hibernate中存在着以下几点区别:

一个对象的实体类型拥有属于自己的标识。一个实体的对象引用被持久化为数据库中的一个引用。一个实体拥有生命周期:它可能与其他实体之间保持一种独立的管理。

值类型的对象并不拥有数据库标识:它属于一个实体,它的持久化状态被嵌入到代表数据库表行的实体中。值类型并不用identifiers或者identifiers属性。它的生命周期依赖于其隶属的实体。

最容易想到的值类型如Strings和Integers。当然,Hibernate也可以允许你使用自定义的类型,这在下面你将会看到。

原创粉丝点击