Persistir DATA [RESOLVIDO]

Bom dia.

Estou fazendo a modelagem de um banco e me surgiu a seguinte dúvida:

Como devo persistir a data no banco? Inicialmente defini como varchar( 8 ) ddmmaaaa.

Na aplicação eu formataria para dd/mm/aaaa.

Devo salvar a data já formatada (dd/mm/aaaa) ?

Gostaria de sugestões do senhores.

Obrigado.

Você usa jpa/hibernate?

Se sim, em geral eu apenas anoto o campo como sendo data e deixo que o banco salve como quiser, depois eu apenas formato para a view.

[quote=Hebert Coelho]Você usa jpa/hibernate?

Se sim, em geral eu apenas anoto o campo como sendo data e deixo que o banco salve como quiser, depois eu apenas formato para a view.[/quote]

Não uso.

[quote=ThalesSilva][quote=Hebert Coelho]Você usa jpa/hibernate?

Se sim, em geral eu apenas anoto o campo como sendo data e deixo que o banco salve como quiser, depois eu apenas formato para a view.[/quote]

Não uso.[/quote]No meu antigo trampo não usava o campo como String, mas como date mesmo. E deixava o próprio formato do banco que era MM/dd/yyyy hh:mm:sss . E formatava na unha na hora de salvar e de buscar.

quase a mesma coisa que eu faço com o JPA, só que mais manual.

Ola Thales,
Para persistir no Banco de dados estou usando Calendar:

    Calendar data = Calendar.getInstance();
    data.setTime(rs.getDate("dataNascimento"));
    contato.setDataNascimento(data);

Agora para formatar, fazer cálculos e o que for necessário, estou usando a biblioteca JodaTime, ela é ótima para manipular datas.
Somente um exemplo de um pequeno trecho de um código que estou fazendo:

[code]
DateTime dataAtual = new DateTime(); //pega a data atual para fazer cálculos até a data de hj

	DateTime dataNascimento = new DateTime(contato.getDataNascimento());//chamo a data no meu banco de dados
	String data = dataNascimento.toString("E - dd/MM/yyyy"); //formata a data
	
	Period periodo = new Period(dataNascimento, dataAtual); //me mostra um período, todo cálculo que preciso de período é feito aqui, daí só os chamo métodos da classe Period que preciso.
	Days dias = Days.daysBetween(dataNascimento, dataAtual); //me mostra a quantidade de dias corridos
	
	
            System.out.println("Data de Nascimento: " +	data );
			
	if (periodo.getYears() < 2){
			System.out.println("Idade " + periodo.getYears() + " ano " + periodo.getMonths() +" meses "+
					periodo.getWeeks() + " semanas e "+ periodo.getDays() + " dias - bebê!");
		}
		else if  (periodo.getYears() >= 2 && periodo.getYears() <= 11){
			System.out.println("Idade " + periodo.getYears() + " ano " + periodo.getMonths() +" meses "+
					periodo.getWeeks() + " semanas e "+ periodo.getDays() + " dias - criança!");
		}
		else if  (periodo.getYears() > 11 && periodo.getYears() <= 18){
			System.out.println("Idade " + periodo.getYears() + " anos - adolescente!");
		}
		else if  (periodo.getYears() > 18){
			System.out.println("Idade " + periodo.getYears() + " anos - adulto!");
		}
	
		System.out.println("Voce tem " + dias.getDays() + " dias de vida!\n");
	}[/code]

Isso me dá para uma data cadastrada no banco como 22/05/2011, o seguinte resultado:

Data de Nascimento: Dom - 22/05/2011
Idade 1 ano 6 meses 0 semanas e 4 dias - bebê!
Voce tem 554 dias de vida!

O legal é que para eu ter esses resultados eu não precisei calcular nada, os método da classe Period e Days, já fizeram isso pra mim. Isso é ótimo pois evita e muito erros de programação, sem falar na rapidez de desenvolver sistemas que envolvam datas.

Abs.
Edjane