Estou com o seguinte cenário e gostaria de algumas dicas de vocês, já pensei em algumas soluções, mas gostaria de escutar soluções de outros arquitetos.
Tenho que desenvolver um aplicativo que deverá ter sua própria tabela, exemplo usuários, mas eu terei que importar esses usuários de 3 conexões diferentes, pois eu não posso criar DBLINK entre os bancos de dados.
Na persistência do meu aplicativo vou utilizar o JPA, mas o que vocês me recomendam, pois terei 3 views diferentes cada uma de uma conexão que importarei dados para a tabela de usuários do aplicativo que estarei desenvolvendo.
Utilizo um framework que poderei jogar estas informações recuperadas das views em um cachê que será tualizado diariamente.
Eu pensei em criar uma tabela usuários_corporativo preenchendo com as informações das 3 views através de StoredProcedures, e depois no Java importar os usuário dependendo do filtro.
Cada view trás informações mais atualizada do que a outra, exemplo da ?view 1? pegarei nome, endereço. Da ?view 2? recupero a data_nasc e da view 3 o telefone.
mas acha mesmo que teria necessidade de criar 3 Sessionfactory pois nesses bancos eu só vou fazer consulta, não vai ter crud eu vou acessa somente as views e fazer crud no meu aplicativo na tabela de usuários
Geralmente quando tenho fontes de dados diferentes crio Enterprise Beans (ou qualquer serviço) que compõe a informação que preciso. No meu caso em particular, atualemente estou trabalhando num projeto que possui informações em um banco MySQL (em especial IDs) e num banco Oracle que possui os detalhes destes IDs.
Para cada um dos bancos possuo EJBs que lidam com suas aplicações normalmente, um para a aplicação que usa o MySQL e outra aplicação que utiliza o Oracle. Para a terceira aplicação que une os dois, possuo outra série de EJBs que fundem as informações, desta forma não preciso utilizar mais uma tabela ou similar para agregar os dados e depois acessá-los. Para apenas visualização essa arquitetura é simples de implementar, no caso de atualizações basta criar um serviço que recebe as informações agregadas e então delega para os outros (que já atendem suas aplicações) cada pedaço específico.