leandromoraesrj / sincad-backend

PROJETO BASE DE EXEMPLO USANDO AS MELHORES PRATICAS DE DESENVOLVIMENTO
0 stars 0 forks source link

Mapeamento Hibernate JPA - Double ou BigDecimal ou Long #2

Open leandromoraesrj opened 2 years ago

leandromoraesrj commented 2 years ago

Verificar qual a melhor opção no java

leandromoraesrj commented 2 years ago
Tipo de dados SQL | Mapeamento JAVA | Tamanho Oracle -- | -- | -- CHAR, CHARACTER | String | 2000 STRING, VARCHAR, VARCHAR2 | String | 4000 INT, INTEGER, | Integer| 2147483647 SMALLINT | Integer| 32767 DEC, DECIMAL, NUMBER, NUMERIC(?,?) | BigDecimal | 9223372036854775807 NUMERIC(?) | Long | 9223372036854775807 DOUBLE PRECISION, FLOAT | Double| 9223372036854775807 REAL | Float | 9223372036854775807

O tipo inteiro foi descontinuado pelo Oracle e substituído por Number. Na classe "Respository" não foi possível usar tipo primitivo (int), então passei a usar a wraprer (Integer); Devido ao tipo primitivo não possuir valor nullo. Ele retorna 0;

O tipo Long (a classe e não o primitivo) gera no banco de dados tipos com maior quantidade de bytes, então ele consegue suportar valores altos.

O tipo BigDecimal possui muitos métodos para tratamento de valores, como arredondamento, potência, raiz e outras operações.

Evite usar o tipo Double, prefira sempre o BigDecimal.

Convertendo Long para Inteiro e vice-versa:

Integer i = theLong.intValue();
Long.valueOf(i);

link para conteúdo:

https://atitudereflexiva.wordpress.com/2016/10/10/mapeamento-de-oracle-types-em-java/ https://docs.oracle.com/cd/B19306_01/java.102/b14188/datamap.htm https://docs.microsoft.com/pt-br/sql/relational-databases/replication/non-sql/data-type-mapping-for-oracle-publishers?view=sql-server-ver15