gpt4 book ai didi

java - 是否有任何可用的 API 来表示各种元素单位,如 KG、Litre、Metre、KM 等

转载 作者:搜寻专家 更新时间:2023-10-30 19:46:36 25 4
gpt4 key购买 nike

在我的项目中,我必须在某处使用 ItemsunitOfIssue。现在,各种项目当然可以有不同的表示单位。因此,我正在寻找一些 API 或某种方式来优雅地处理这种情况。

是否有任何可用的 API 提供某种方式来表示这些单位?我听说过 JScience这看起来令人印象深刻,但我再次面临将其映射到 JPA 中的另一个问题。经过一些谷歌工作后,我发现在这种情况下正在进行一些工作 - JScience-JPA , 但它似乎还不稳定,无法用于生产。

我还发现了一些关于 JSR-275 的信息, 但来自 this JCP page好像被拒绝了。

然后我遇到了unitsofmeasure ,我还没有深入研究细节。但是,同样的问题又来了。这可以用 JPA 映射吗?

编辑:- 来自 this SO question我遇到了Java Numbers with Unit但我不知道它是否已准备好生产。

我真的很困惑,尤其是在看到上面的这些选项之后。关于我是否可以使用它们中的任何一个,JPA 是一个额外的问题。有没有人遇到过这种情况,并找到了解决办法?我真的需要一些帮助。我应该使用什么?如果没有其他出路,那么代表这些单位的适当方式是什么。我看到的一种方法是使用 enums。但是,当然,那将是最后的选择。

最佳答案

我在一个项目中广泛使用了 JSR-275(在它被 JCP 拒绝之前)。最初我们没有使用 JPA,但后来决定我们应该使用 JPA 2.0 来持久化我们的模型,我不得不处理我的度量对象的持久化。

这可能不是您问题的答案,但可能会为讨论带来一些有趣的想法。

我们考虑了几种选择:

  1. 度量是可序列化的,并且 JPA 可以映射任何可序列化的对象。这里的问题是这些措施将作为二进制对象保存在数据库中,并且它们会受到所有序列化问题的影响(即版本控制等)
  2. 我们可以通过将数据保留为原始类型(即整数、 double 等)来调整我们的模型,前提是我们同意对每个单位使用国际计量单位。因此,字段将基于 JPA 支持的类型,但 getter 和 setter 将使用度量对象。将 JPA 映射配置为基于字段而不是属性。这里的问题是必须在不影响域对象的公共(public)接口(interface)的情况下更改模型以更改封装的数据。
  3. 由于我们使用 hibernate 作为我们的持久性提供程序,我们可以接受偏离 JPA 标准并使用 hibernate custom value types将度量对象映射到相应的原始类型。然后我们可以为此目的使用 hibernate 注释映射我们的类型。 (See an example here)。这个问题的警告是失去持久性供应商的独立性。

我们最终使用了备选方案 #3,它对我们来说效果很好。

关于java - 是否有任何可用的 API 来表示各种元素单位,如 KG、Litre、Metre、KM 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14252520/

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