Exemplos de Implementação da Camada de Entidades

Olá pessoal.

Estamos trabalhando para iniciar a implementação de um novo sistema aqui na empresa. A questão é que nosso sistema é multi-empresa, ou seja, quase todas as tabelas do sistema terão uma associação com a tabela de empresa. Na prática isto significa que esta chave estrangeira fará parte da chave primária da maioria das tabelas resultando em inúmeras chaves primárias compostas.

Dentro do contexto que nós já decidimos que vamos usar JPA/Hibernate, algumas pessoas acham que o melhor é implementar as chaves compostas da maneira correta dentro do Hibernate outras acham melhor implementar uma chave seqüencial unica e implementar a integridade do banco “na mão”.

Meu objetivo NÃO é começar uma GUERRA sobre o que CERTO ou ERRADO. Isso não será produtivo. O que eu gostaria é a opinião da comunidade sobre como vocês já viram isto implementado. Tanto a camada de modelo como a camada de persistência. Como vocês implementam as chaves compostas com associações? Ou no caso de se usar uma chave seqüencial unica, como vocês implementam a integridade na camada de persistência?

Qualquer comentário será de grande ajuda.

Desde já agradeço. Até.

Minha experiência com chave composta foram poucas e terríveis (legado). Mas conseguimos fazer funcionar como a especificação manda. Mas sem duvida foi muito melhor usar uma chave única (projeto novos), apesar da birra dos DBAs, pois segundo eles é desperdício de espaço. Quanto a integridade para chave sequencial, os campos que fariam parte da chave composta ficavam como unic. Não sei se era essa a duvida.