在对象级别,实体类型和值类型之间有什么区别?我知道实体将具有ID,但值将没有,但为什么我们需要不同的方式来映射实体与值类型?
这样做是为了让hibernate状态可以对值类型应用任何优化?
实体已经定义了表的持久化位置。因此,当您在实体A中拥有B实体的列表时,则无需为B定义目标表:B已经定义了它。值类型没有任何关联的表,因此List<String>实体A 中的in 映射必须定义将使用哪个表来存储此列表。
List<String>
而且,根据定义,值类型始终完全由其包含实体拥有。删除实体后,您还将删除与此实体关联的所有字符串。实体并非如此:删除课程实体时,不会删除其所有学生。
这只是两个示例,表明必须定义不同的映射属性。