Ola pessoal, estou em um projeto novo em uma empresa que entrei a pouco, e o analista de sistemas desta empresa esta modelando o sistema (fazendo d.e.r), será um sistema quer rodará apenas com servlets e jsp e usarei o hibernate para camada de persistencia.
Até ai td bem, o q me espantou foi q o analista esta modelando e criando algumas tabelas com o identificador como String (char no ORACLE 10g que será o bd q utilizaremos), ai conversando com ele, foi dito que esta escolha foi devido a performance em consultas.
Gostaria de saber a opnião de vcs a respeito disso, e se realmente terei um ganho de performance significativo que compense td o trabalho q terei para gerenciar as “pk” que serão digitadas pelos usuários da aplicação!
Aguardo a opnião de vcs!
Obrigado a todos!
Sim, pricipalmente em Joins e consultas que a chave primaria é usada no where ou order.
Na verdade oq ele quer saber se char é melhor que inteiro.
eu prefiro o conceito de Surrogate Keys.

Na verdade existem varias maneiras de melhorar a performance de um banco de dados, eu acredito que fazendo isso não tera um ganho significativo.
Eu já tive algumas experiências onde eu precisava ganhar performance, umas das soluções que eu adotei foi a seguinte.
Eu fazia a modelagem do banco de dados com primary key simples esquece chave “combosta”, e depois eu tirava todas as chaves do banco de dados, pois se ele é incremental a chave nunca vai se repetir, nisso vc já ganha alguns segundos nas queries.
Agora respondendo sua pergunta acredito que utilizando inteiro a performance vai ser a mesma tendo em vista que quem vai controlar isso é o banco de dados e não a aplicação.
E o problema de deixar o usuário digitar a chave é um pouco antigo este conceito acredito que não seja uma boa prática.
Está é minha opinião se falei besteira por favor me perdoem