我们正在开发一个股票交易应用程序,并讨论是否应该为货币引入数据类型。金融应用程序中必需的货币数据类型?
提议的Currency
数据类型包含货币数量和类型(例如USD,EUR,JPY)。
我现在反对它,因为我们也将它用于持久性bean的属性类型。
首先,它会包含redudant数据。以StockQuote
类为例,其中包含给定库存的OHLC(开盘价,最高价,最低价和收盘价)。如果它们中的每一个都由Currency
实例表示,那么所有的OHLC都会引用相同的货币类型(例如USD)。在金融应用中,货币价值被广泛使用,而不仅仅是股票报价,所以我们谈论的是大量的冗余。
其次,Currency
实例是两个值(金额和货币类型)的组合,所以你要么完全下降的货币类型,并且只有量字段存储在数据库中的表或创建一个货币类型列在表中为每个Currency
属性,这在表中是多余的,并且打破第二范式。无论哪种方式,从表中读取一条记录返回到StockQuote
对象将是不可能的与JPA和棘手的Hibernate最好。
以前有人遇到过类似的问题吗?金融应用程序拥有自定义货币类别是否正常?如果是这样,你是怎么用JPA/Hibernate实现它的?
使用java.math.BigDecimal或者可能派生自己的基于它的类(使用组合不继承),但不需要重新发明轮子。 – GriffeyDog 2011-03-16 16:21:08