Como o equals e o hashcode da classe do modelo devem ser implementados no Hibernate? Quais são as armadilhas comuns? A implementação padrão é boa o suficiente para a maioria dos casos? Há algum sentido em usar chaves comerciais?
Parece-me muito difícil fazer funcionar corretamente em todas as situações, quando o lazy fetching, geração de id, proxy, etc. são levados em consideração.