我們正在開發一個股票交易應用程序,並討論是否應該爲貨幣引入數據類型。金融應用程序中必需的貨幣數據類型?
提議的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