2011-11-07 73 views
3

对象级别的实体和值类型有什么区别。我知道实体将有一个ID,但价值不会但为什么我们需要不同的方式来映射实体与值类型?休眠中的实体和值类型

这样做是为了让hibernate可以对值类型应用任何优化?

回答

10

一个实体已经定义了该表的持续位置。因此,当您在实体A中拥有B实体列表时,无需为Bs定义目标表:B已经定义它。值类型没有任何关联的表,因此实体A中的List<String>的映射必须定义将使用哪个表来存储此列表。

此外,根据定义,值类型始终完全由其包含的实体拥有。一旦删除实体,您也删除与此实体关联的所有字符串。实体情况并非如此:当您删除课程实体时,您不会删除其所有学生。

这些只是两个示例,显示必须定义不同的映射属性。

0

实体类型的对象具有自己的标识,其中值类型的对象没有数据库标识,它属于实体。 值类型对象通过拥有实体进行标识