Numeric!

21 respostas
juniorsatanas

Pessoa como fica a Declaração de numeric para CPF ?

@NotNull
 @Length(min =11 , max = 11)
   @Column(name="cpf") 
	private  Numeric cpf;  <---

Por que String não tem nada a ver ! e para pesquisa Número é mais rápido não ?

Valeu.

21 Respostas

Felagund

Long ou Integer

juniorsatanas

mas como fica no banco ?

furutani

Se for Oracle use number

juniorsatanas

PosgreSQL !

Requena

bigint equivale a Long em PostGre

juniorsatanas

Requena so que queria usar Numeric (11) definir tamanho específico !

renzonuccitelli

Acho que se vc usar string e criar indice para o CPF, não vai ter problema com performance não…

juniorsatanas

renzonuccitelli em uma pesquisa, Numeric seria mais rápido não ?

renzonuccitelli

Dá uma lida nesse link sobre índice. Basicamente ele monta uma árvore, ou seja, a busca fica bem otimizada. Provavelmente ele deve usar hash e usar números para fazer a busca, então seria meio que indiferente o tipo da coluna. O custo da busca mais rápida é uma inserção mais lenta, já que com indíce, ele vai ter que procurar o lugar “certo” do elemento na hora da inserção. Mas como, em geral, mais pesquisamos em um BD do que inserimos dados, é um preço barato a se pagar.

renzonuccitelli

Ah, e só uso valores númerico em meus campos qdo faz sentido, tipo, quando vc vai fazer comparação menor e maior, alguma operação matemática. Casos como CPF é uma simples String definida só por digitos. Aí já tem até uma anotação para vc validar isso, e deve até já ter alguma anotação do Hibernate validator para validar isso.
Mas se vc quiser colocar algum valor númerico mesmo assim, aí vira questão de gosto.
Uma outra dica é não se preocupar com performance antes de isso ser necessário. Então vc primeiro faz todo o sistema, depois vc olhá a performance. Isso se for necessário, pq muitas vezes o sistema já atende as necessidades do cliente. Além disso, as vezes vc se preocupa com essa busca, mas o gargalo de performance pode ser outra coisa, e aí vc perdeu um tempão melhorando algo que não será perceptivo para o usuário.

juniorsatanas

renzonuccitelli Sem palavras ! “disse tudo”

Muito Obrigado !

e Boa Noite !

juniorsatanas

renzonuccitelli Indica um livro bom sobre isso ? pdf !

renzonuccitelli

Acho uma boa a própria documentação do Postgresql. Nesse seu caso, de um índice simples tirado só de uma coluna, vc pode fazer via Hibernate mesmo, só anotando o CPF:

@Index(name = "person_cpf_index") public String getCpf() { return cpf; }

Tem um livro bacana que acho que tem um canguru na capa, mas não lembro o nome. Dá uma procurada no google. Se não achar, qdo eu for pro trabalho vejo o nome e escrevo aki.

juniorsatanas

renzonuccitelli Bom boa idéia !

edmarr

Não se esqueça de zeros a esquerda são ignorados em um campo numérico .

juniorsatanas

edmarr Verdade Capetinha BSD ! tu usa mesmo ou é so frescura tua 1?

Abraço !

edmarr

juniorsatanas:
edmarr Verdade Capetinha BSD ! tu usa mesmo ou é so frescura tua 1?

Abraço !

Ja usei muito qndo iria implementar firewall ou vpn´s
mas agora rsrs so pq gosto msm de 6 anos pra ka so programação msm .

juniorsatanas

Tu recomenda eu usar ele aqui como servidor de banco de dados ?

sergiotaborda

CPF não é um numero, é um codigo alfanumérico que por acaso só usa numeros.
Colocá-lo em um campo numérico é asneira e fazê-lo achando que terá melhor performance é dupla asneira.

Regra de ouro : SEMPRE usar o tipo de dado adequado.

juniorsatanas

sergiotaborda Bom dia !

Anotado sua dica !

function ValidarCPF(cpf: int[11]) -> bool
    var v: int[2]

    //Nota: Calcula o primeiro dígito de verificação.
    v[1] := 10×cpf[1] + 9×cpf[2] + 8×cpf[3]
    v[1] +=  7×cpf[4] + 6×cpf[5] + 5×cpf[6]
    v[1] +=  4×cpf[7] + 3×cpf[8] + 2×cpf[9]
    v[1] := 11 - v[1] mod 11
    v[1] := 0 if v[1] ≥ 10

    //Nota: Calcula o segundo dígito de verificação.
    v[2] := 11×cpf[1] + 10×cpf[2] + 9×cpf[3]
    v[2] +=  8×cpf[4] +  7×cpf[5] + 6×cpf[6]
    v[2] +=  5×cpf[7] +  4×cpf[8] + 3×cpf[9]
    v[2] +=  2×v[1]
    v[2] := 11 - v[2] mod 11
    v[2] := 0 if v[2] ≥ 10

    //Nota: Verdadeiro se os dígitos de verificação são os esperados.
    return v[1] = cpf[10] and v[2] = cpf[11]
edmarr

Depende muito , se for postgree ou mysql
te aconselho Debian =´) .

obs: Recomendo freebsd somente para firewall e vpn , mas a quem goste de usa-lo para algo mais .

Criado 18 de fevereiro de 2010
Ultima resposta 19 de fev. de 2010
Respostas 21
Participantes 7