为了账号安全,请及时绑定邮箱和手机立即绑定

使用数据库时可以使用类型检查代码吗?

使用数据库时可以使用类型检查代码吗?

Cats萌萌 2022-05-12 15:03:50
我正在尝试将一些代码插入数据库。但是,我在使用彼此子类的模型时遇到了问题。我有一个包含所有这些子类的列表。List<Metric> metrics = experiment.getMetrics();for(Metric m : metrics) {    int id = m.getId();    // type checking code}Metric 有 Rating 和 Quantity 的子案例。这些中的每一个又都有自己唯一定义的表。我对使用类型检查的想法很矛盾。但我没有看到任何直接的解决方案。一种似乎没有更好的替代方法是在 Metric 表中创建一个名为 metric_type 的新列。但这会导致与类型检查非常相似的事情。有什么建议么?
查看完整描述

2 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

由于不完全兼容的系统之间的映射,您遇到了对象关系阻抗不匹配。由于关系模型中的表之间无法继承,因此您必须在使用继承的对象模型中牺牲一些东西。除非您切换到对象数据库,否则无论您做什么都会有边缘情况。

如果在扩展Metric加载实体的类中定义自定义 CRUD 操作可能会很棘手。Metric.get(id)如果每个表都有自己的 PK 序列并且两者都有Rating并且Quantity可以具有相同的数字 PK 值,那么究竟会加载什么。

你可以看看 JPA 如何解决这个问题。它使用自定义注释,例如@MappedSuperclass@Entity。我想这是类型检查的一种形式。


查看完整回答
反对 回复 2022-05-12
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

我不建议你输入检查


解决这个问题的 OOP 方法是insert在类中创建一个方法Metric。Rating然后Quality用在相应表中插入对象的适当代码覆盖该方法。


for(Metric m : metrics) {

    int id = m.getId();

    m.insert();


}

在您的循环内部只需调用insert,由于后期绑定,将调用适当的方法并执行正确的代码。


查看完整回答
反对 回复 2022-05-12
  • 2 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号