【发布时间】:2012-01-30 10:40:12
【问题描述】:
我正在学习休眠,我遇到了休眠映射组件。 如果我们可以为学生和地址设置相同的 pojo 类,为什么要使用它?
【问题讨论】:
-
不知道为什么有些人不赞成这个问题。也许你很明显看到答案,但问题是有效的:“有一个工具,我看到了另一种做事方式,有什么原因可以让我使用它”。
标签: java hibernate hibernate-mapping
我正在学习休眠,我遇到了休眠映射组件。 如果我们可以为学生和地址设置相同的 pojo 类,为什么要使用它?
【问题讨论】:
标签: java hibernate hibernate-mapping
你可以。但这并不意味着你想要。
原因一:您想对它们进行不同的建模
在对象中你想以最好的方式建模。这意味着一件事是学生和其他地址。将来,每个学生可能有更多地址,或者没有,因此如果您有两个不同的对象,迁移到该模型会更容易。
将其视为高内聚和低耦合(良好的设计模式)。每个类别都有其意义、责任和有限的行动范围。越孤立的类,越准时的变化。您的代码也将更加模块化。
相比之下,您在表中做出让步以获得性能和更直接的查询。这意味着您可以对模型进行非规范化(例如连接学生和地址)。
原因二:遗留模型
举个例子。如果您有一个旧的单表并想使用两个对象,则需要此映射。或者...如果您的应用程序已经基于两个对象创建,但您的数据库经过重新设计,您决定使用一个表更好。
【讨论】:
还有一点,Address(这里被视为组件)不能有自己的主键,它使用封闭的 Student 实体的主键。
【讨论】: