Hibernate - primitivos ou tudo derivado?

pessoal outra dúvida…em relação aos tipos primitivos int, long, boolean, etc, devo utilizar esse ou é melhor os tipos primitivos Long, Integer, Boolean, etc nos mapeamentos do hibernate?

qual a diferença entre utilizar os primitivos e os derivados em relação a esses tipos?

abraços

Então na verdade um Integer não é primitivo …um int sim…

A diferença é que as varíaveis de Referência do tipo Integer, Short, Long aceitam valores como null…

já os primitivos int, long, short…aceitam apenas números…

imagine se vc faz uma busca no banco e recebe um ID nulo…como vc irá armazena-lo numa varíavel int ???

entende pq usar as varíaveis de referência

opsss…

quanto ao tipos primitivos ai em cima o erro foi digitação, visto que minha dúvida era justamente essa, se uso os primitivos ou derivados, foi mals

o texto correto sera

em relação a dúvida…ficou claro a utilização…vlw

abraços

:idea: Bom cara comunidade

A solução para este problema pode ser a seguinte anotação ( @Formula( coalesce(coluna,valorPadrao) ) ).

@Column(name = “COLUNA”)
@Formula(" coalesce(“COLUNA”, VALOR_PADRAO) ")
private double COLUNA;

Mais e preciso avaliar se seu banco permite o comando “coalesce” e se realmente o campo no banco não teria que ter um valor default é notNull, pois isto apenas contorna o problema.
:smiley:

Cara eu tive que modificar nas minhas classes de int para Interger para que funciona-se o filtro de ativo|desativo , pois se declaro um tipo primitivo int , automaticamente o valor para ele é 0, não sendo possível realizar o tipo do filtro citado acima pois para trazer todos ele precisaria ser setado como null.

Acho que basicamente a diferença é esta do valor inicial, e lógico o Integer sendo uma Class ele tem outras opções quer um tipo primitivo não tem http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Integer.html

Espero ter ajudado.

coalesce(coluna,valorPadrao) é uma função sendo inserida na declaração das colunas. Ou seja caso o registro no banco de dados for null a função seta o valor padrão. Esta função e nível de banco de dados.

O uso de classes wrapper é interessante apenas para usar suas funções, se for somente para armazenar inteiros o tipo primitivo tai para isto.
:smiley:

Espero ter ajudado.

Cara, eu prefiro sempre utilizar os tipos primitivos (mesmo com JPA) int, boolean, char, double, …

É menos um objeto na memória. [=