为什么要使用Hibernate映射组件?

3

我正在学习Hibernate,我遇到了Hibernate Mapping Component。如果我们可以在同一个POJO类中表示学生和地址,为什么要使用它?


不知道为什么有些人对这个问题进行了负投票。也许你很容易看出答案,但这个问题是有效的:“有一个工具,我看到了另一种做事情的方式,有什么理由让我使用它”。 - helios
2个回答

3
你可以这样做,但并不意味着你想这样做。
原因一:你想以不同的方式建模它们。在对象中,你希望以最佳方式建模某些东西,这意味着一个是学生,另一个是地址。将来你可能会有更多的地址与学生相关联,或者没有,因此如果你拥有两个不同的对象,迁移到那种模型将更容易。
把它看作高内聚性和低耦合度(良好的设计模式)。每个类都有自己的含义、责任和有限的行动范围。类之间隔离得越多,变化就越准时。你的代码也会更加模块化。
相反,在表中,为了获得性能和更直接的查询,你需要做出让步。这意味着你可以对你的模型进行反规范化(如连接学生和地址)。
原因二:遗留模型。例如,如果你有一个旧的单表格,并且想使用两个对象,你需要进行这种映射。或者……如果你的应用程序已经基于两个对象构建,但数据库正在重新设计,你决定一个表格更好。

1
另外一个要点是,地址(在此被视为组件)不能有自己的主键,它使用封闭的学生实体的主键。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接