Pessoal,
gostaria de saber como vocês lidam com o seguinte problema corporativo:
Onde eu trabalho, existe um único SGBD e schema para TODAS as aplicações desenvolvidas.
Como consequência da base de dados centralizada e compartilhada por todas as aplicações, existem algumas entidades que são realmente utilizadas por várias aplicações, ou seja, são de fato corporativas. Um exemplo seria a entidade PessoaFisica.
Logo, exemplificando, no contexto do sistema XPTO, foram criados relacionamentos na entidade PessoaFisica que apenas fazem sentido para esse contexto. No contexto do sistema Foo, a mesma coisa aconteceu. Foram criados relacionamentos de entidades desse dominio com PessoaFisica.
O resultado é que hoje há uma dependencia implícita das classes do sistema XPTO, com algumas classes do sistema Foo, por conta dessa entidade comum - PessoaFisica.
Estamos querendo modularizar a camada de domínio, que hoje é um projeto só (e imenso), de tal forma que as dependências hoje existentes sejam minimizadas, mas estamos nos deparando com algumas questões de complexidade acidental.
Inicialmente, pensamos em criar uma herança de PessoaFisica para cada um dos contextos. O problema é que não é possível mapear (estamos usando Hibernate), via herança, a entidade pai e a entidade filha para a mesma tabela (essa entidade PessoaFisica está mapeada para uma tabela no SGBD com o mesmo nome e contém todas as constraints e relacionamentos necessários para todos os sistemas que a manipulam).
Enfim, tenho certeza que esse problema corporativo não deve ser novidade, mas infelizmente conheço poucas pessoas que já passaram por uma situação parecida para trocar experiências.
O que vocês sugerem?