Persistir telefone, qual o tipo de dado mais indicado?  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
FkJ
JavaTeenager
[Avatar]

Membro desde: 28/12/2006 12:39:50
Mensagens: 192
Localização: Contagem - MG
Offline

Estou usando Hibernate.

Qual tipo de dado é mais indicado para armazenar um telefone com oito dígitos? Estou usando Long, mas já vi pessoas usarem String para tal situação. O que acham?

Obrigado,
Felipe

[Email] [MSN]
Zakim
JavaEvangelist
[Avatar]

Membro desde: 21/07/2005 09:25:24
Mensagens: 482
Localização: Cuiabá - MT
Offline

A não ser que vc queira validar o numero de telefone, vá de Varchar para o DB e String para Java

eu utilizo um varchar, pq armazeno desta forma --> (65)3223-8454


This message was edited 1 time. Last update was at 10/04/2008 09:33:55


http://zakim.blogspot.com - Zakim
Sun Certified Java Programmer

Comece pequeno, pense grande e cresça rápido!
[Email] [MSN]
esb
JavaEvangelist
[Avatar]

Membro desde: 21/06/2006 14:40:31
Mensagens: 451
Localização: São Paulo
Offline

Integer resolve.

esb
pango
Virtual Machine Man

Membro desde: 20/08/2005 16:31:37
Mensagens: 556
Localização: Pangolândia
Offline

Dica: para qualquer informação que não será utilizada em cálculos, utilize CHAR ou VARCHAR.

programmer.setFucked(user.isStupid());
Sun Certified Java Programmer 1.4
FkJ
JavaTeenager
[Avatar]

Membro desde: 28/12/2006 12:39:50
Mensagens: 192
Localização: Contagem - MG
Offline

Esqueci de mencionar que gravo o DDD também, portanto para um tipo númerico tem que ser Long mesmo.

Para persistência, tenho outras duas dúvidas quanto ao uso de VARCHAR.
- Não vou precisar de letras
- Custo computacional mais alto?
[Email] [MSN]
peerless
GUJ Master
[Avatar]

Membro desde: 22/01/2007 14:52:26
Mensagens: 1391
Localização: Porto Alegre / RS
Offline

FkJ wrote:Esqueci de mencionar que gravo o DDD também, portanto para um tipo númerico tem que ser Long mesmo.

Para persistência, tenho outras duas dúvidas quanto ao uso de VARCHAR.
- Não vou precisar de letras
- Custo computacional mais alto?


Não faz besteira. Telefone é varchar.
Não precisará de letras necessariamente, basta gravar Strings. ex: "123 (456) - 789"
Custo mais alto? Cara não viaja..
[MSN]
erickcellani
JavaEvangelist
[Avatar]

Membro desde: 13/05/2006 13:37:12
Mensagens: 425
Localização: São Paulo - SP
Offline

peerless wrote:
Não faz besteira. Telefone é varchar.
Não precisará de letras necessariamente, basta gravar Strings. ex: "123 (456) - 789"
Custo mais alto? Cara não viaja..


disse tudo...

varchar( 8 ) resolve! se for gravar o ddd varchar(10)

eu ainda gravaria o ddd em outra coluna.. mas se não é o seu caso, varchar sem dúvidas...
acredito que vc não precise fazer cálculos com os números do telefone

This message was edited 1 time. Last update was at 11/04/2008 07:32:30

[MSN]
andre2k2
JavaEvangelist

Membro desde: 27/03/2007 14:54:31
Mensagens: 353
Offline

FkJ wrote:- Custo computacional mais alto?


Acho q vc tem custo computacional mais alto quando converte um long em String na hora de apresentar esse valor... então deixe varchar no banco que ja fica sussegado... mas eu nao colocaria no formato (99)9999-9999 no banco... ta desperdiçando 3 bytes: ()- !!!

Varchar de 10 posições: 9999999999. Simples e rápido!!
blst
Debugger

Membro desde: 28/12/2007 16:42:40
Mensagens: 64
Offline

Eu também utilizaria Varchar.


Tanto porque você pode usar um JFormattedTextField, onde você criaria uma mascara obrigando ao usuário digitar somente números e salvando no banco de uma forma mais visível e prática..

Se você usar um integer ou um long.. salvaria no banco da seguinte forma se tivesse o ddd junto :

1132365890

Já usando uma mascara ficaria mais ou menos assim

(11) 3236-5890

OCP, Java SE 6
Leonardo3001
GUJ Ranger

Membro desde: 04/07/2007 18:28:58
Mensagens: 975
Offline

Dêem uma "shiftada" em seus pensamentos. Afinal, para que se discutir se é String, long ou sei lá o que? A orientação a objetos serve para que?

O tipo de dado apropriado para telefone é: Telefone



A orientação a objetos é útil para encapsular a decisão de se usar long ou String. Não tenha medo de usar um objeto só porque acha que é "pequeno" ou "porque não está associado a pattern".

[edit]
O método getAsLong() estava retornando String (quem manda não compilar!), corrigido.
[/edit]

This message was edited 1 time. Last update was at 12/04/2008 12:33:47


Leonardo Veríssimo
-------------------------------------------------
Objectzilla
[WWW]
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

+1 pra tudo que o Leonardo disse. Mas eu usaria toString() e toLong() ao inves de getAsString() e getAsLong() - assim, quando vc for imprimir o telefone na UI, basta fingir que eh uma String e na maioria dos casos vai funcionar direitinho (se nao, que merda de framework vc ta usando? )
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
victorwss
JWizard
[Avatar]

Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline



getAsLong() retornar String!?

Victor Williams Stafusa da Silva

Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.

Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.

Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.


É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).


Se você escreve "concerteza", "concerteza" você andou matando aulas de português.
[MSN]
Leonardo3001
GUJ Ranger

Membro desde: 04/07/2007 18:28:58
Mensagens: 975
Offline

victorwss wrote:getAsLong() retornar String!?


Valeu o aviso!

Leonardo Veríssimo
-------------------------------------------------
Objectzilla
[WWW]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team