对象级别的实体和值类型之间有什么区别。我知道实体会有一个id但值不会,但为什么我们需要不同的方法来映射实体和值类型?
是否已完成,以便hibernate可以对值类型应用任何优化?
答案 0 :(得分:13)
实体已经定义了持久化的表。因此,当您在实体A中有B实体列表时,不需要为Bs定义目标表:B已经定义了它。值类型没有任何关联表,因此实体A中List<String>
的映射必须定义将用于存储此列表的表。
此外,根据定义,值类型总是由其包含的实体完全拥有。删除实体后,还会删除与此实体关联的所有字符串。实体不是这种情况:删除课程实体时,不会删除所有学生。
这些只是两个示例,表明必须定义不同的映射属性。
答案 1 :(得分:0)
实体类型的对象具有自己的标识,其中值类型的对象没有数据库标识,它属于实体。 值类型对象通过拥有实体来识别