web-dev-qa-db-fra.com

Quel type mapperiez-vous BigDecimal en Java / Hibernate dans MySQL?

Après être passé par le trainwreck du code du développeur précédent, j'ai réalisé que je devais déplacer toutes les colonnes basées sur l'argent pour ne pas utiliser les mathématiques à virgule flottante. Du côté Java cela signifie utiliser BigDecimal, mais lorsque vous utilisez Hibernate/JPA et MySQL 5, quel serait le type de données MySQL approprié pour créer cette colonne?

37
benstpierre

DÉCIMAL et NUMÉRIQUE.

Le mappage Java Java pour les types DECIMAL et NUMERIC est Java.math.BigDecimal. Le type Java.math.BigDecimal fournit des opérations mathématiques pour permettre aux types BigDecimal d'être ajoutés, soustraits, multipliés et divisés avec d'autres types BigDecimal, avec des types entiers et avec des types à virgule flottante.

La méthode recommandée pour récupérer les valeurs DECIMAL et NUMERIC est ResultSet.getBigDecimal. JDBC permet également d'accéder à ces types SQL sous forme de simples chaînes ou tableaux de caractères. Ainsi, Java peuvent utiliser getString pour recevoir un résultat DECIMAL ou NUMERIC. Cependant, cela rend le cas courant où DECIMAL ou NUMERIC sont utilisés pour les valeurs monétaires assez maladroit, car cela signifie que les rédacteurs d'applications ont pour effectuer des calculs sur les chaînes. Il est également possible de récupérer ces types SQL sous l'un des types numériques Java.

Jetez un oeil ici pour plus de détails.

45
Abimaran Kugathasan