Olá, estamos com o seguinte problema:
estamos desenvolvendo um ERP composto por diversos modulos, sendo que nem todos acessam o mesmo banco de dados.
Cada um destes módulos é armazenado no seu próprio arquivo JAR, que contém também os arquivos de configuração do Hibernate.
Individualmente, os modulos trabalham perfeitamente, a dúvida aparece quando queremos criar algum modulo usando classes pertencentes a outros modulos.
Exemplo:
suponhamos que tenhamos um modulo só para cadastro de fornecedores, e dentro do qual tenhamos mapeada uma classe chamada Fornecedor com o seguinte mapeamento e que acessa o banco de dados fictício “fornecedores”:
<class name="moduloFornecedores.Fornecedor" table="fornecedores">
<id name="id" column="id">
<generator class="increment"/>
</id>
<property name="nome" column="nome"/>
</class>
E tenhamos um outro módulo responsável pela cotação de preços e que necessite usar a classe “Fornecedor”, do pacote “moduloFornecedores” do modulo de cadastro de fornecedores mas que use o banco de dados “cotações”.
Se ambos acessassem o mesmo banco de dados, e compartilhassem as mesmas configurações do Hibernate, o mapeamento seria simplíssimo. Seria algo como:
<class name="moduloCotacao.Cotacao" table="Cotacao">
<id name="id" column="id">
<generator class="increment"/>
</id>
<property name="nome" column="nome"/>
<many-to-one
name="fornecedor"
column="IdFornecedor"
class="moduloFornecedores.Fornecedor"
not-null="true"
lazy="false"/>
</class>
No entanto, os dois modulos não compartilham as mesmas configurações, e muito menos os bancos de dados (apesar de podermos criar os relacionamentos entre os bancos sem problemas usando as ferramentas de administração dos mesmos). Como devemos proceder? É possível fazer isto? Como? Posso configurar o Hibernate para usar as configurações de outra aplicação? Posso ter mais de um SessionFactory? Caso sim, como faço para referenciar diferentes objetos do tipo SessionFactory e, assim, resolver este problema?