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.
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.
Long ou Integer
mas como fica no banco ?
Se for Oracle use number
PosgreSQL !
bigint equivale a Long em PostGre
Requena so que queria usar Numeric (11) definir tamanho específico !
Acho que se vc usar string e criar indice para o CPF, não vai ter problema com performance não…
renzonuccitelli em uma pesquisa, Numeric seria mais rápido não ?
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.
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.
renzonuccitelli Sem palavras ! “disse tudo”
Muito Obrigado !
e Boa Noite !
renzonuccitelli Indica um livro bom sobre isso ? pdf !
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.
renzonuccitelli Bom boa idéia !
Não se esqueça de zeros a esquerda são ignorados em um campo numérico .
edmarr Verdade Capetinha BSD ! tu usa mesmo ou é so frescura tua 1?
Abraço !
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 .
Tu recomenda eu usar ele aqui como servidor de banco de dados ?
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.
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]
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 .