Dopo aver attraversato il treno del codice di sviluppo precedente, mi sono reso conto che avrei dovuto spostare tutte le colonne basate sul denaro per non utilizzare la matematica in virgola mobile. Dal lato Java questo significa usare BigDecimal ma quando si usano Hibernate/JPA e MySQL 5 quale sarebbe il tipo di dati MySQL appropriato per creare quella colonna?Che tipo mapperesti BigDecimal in Java/Hibernate in MySQL?
risposta
DECIMALE e NUMERICO.
Il mapping Java consigliato per i tipi DECIMAL e NUMERIC è java.math.BigDecimal. Il tipo java.math.BigDecimal fornisce operazioni matematiche per consentire l'aggiunta, la sottrazione di tipi BigDecimal, moltiplicato e diviso con altri tipi BigDecimal, con tipi interi e con tipi a virgola mobile.
Il metodo consigliato per il recupero dei valori DECIMAL e NUMERICI è ResultSet.getBigDecimal. JDBC consente inoltre l'accesso a questi tipi di SQL come semplici stringhe o matrici di caratteri. Pertanto, i programmatori Java possono utilizzare getString per ricevere un risultato DECIMALE o NUMERICO. Tuttavia, ciò rende il caso comune in cui DECIMAL o NUMERIC vengono utilizzati per valori di valuta piuttosto scomodi, poiché significa che gli scrittori di applicazioni devono eseguire matematica su stringhe su . È anche possibile recuperare questi tipi di SQL come uno qualsiasi dei tipi numerici Java.
Dai un'occhiata a here per ulteriori dettagli.
Link aggiornato: http://docs.oracle.com/javase/1.5.0/docs/guide/jdbc/getstart/mapping.html – borjab