gpt4 book ai didi

java - Hibernate ORM 设计策略

转载 作者:行者123 更新时间:2023-12-02 00:09:20 24 4
gpt4 key购买 nike

我需要构建一个车辆域对象。所有车辆对象都会有大约 5 个属性......没什么大不了的。我用@Entity注释该类,并添加用@Id注释的id。我的问题是,我需要考虑其他两种类型的特种车辆。一个需要保存 2 个额外的字符串值,另一个需要保存一个字符串列表。

我希望能够执行 findAll() 并获取所有车辆,因此我并不真正愿意为其他两种类型的车辆创建完全独立的域对象并为它们创建完全独立的表。我考虑过创建一个“AdditionalProperties”抽象类,使其成为 Vehicle 的成员,然后将其扩展到我的两辆特种车辆,但我很快就迷失在注释它并将其映射到数据库的正确方法中。但即便如此,我还是不得不编写大量的 if 语句来检查车辆类型并强制转换该类等

我的另一个想法只是在我现在拥有的单个车辆域对象中包含额外的字段(即使它们对所有其他类型的车辆没有任何意义)并将值保留为空,除非它是特种车辆之一。

有人对我应该如何处理这个问题有任何想法吗?可能有一些关于如何注释类的示例?

最佳答案

为什么不简单地创建 Vehicle 的两个子类,并包含附加属性? Hibernate 支持继承。您将有三个选项来持久保存实体继承树:

  • 所有内容都在一个表中(通常是最快、最简单的选项)
  • 每个实体都有自己的表
  • 公共(public)表中的公共(public)属性,以及其自己的表中的其他子实体属性。

无论您选择哪种解决方案,选择车辆都会选择满足条件的所有类型的车辆。 Hibernate 查询是多态的。

阅读the documentation .

关于java - Hibernate ORM 设计策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13176819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com