Olá, aqui na empresa temos varios projetos EJB que possuem dependência para outros projetos EJB, por exemplo o sistema de rh (rh_ejb) que está em uma base sqlServer e um sistema de planejamento estratégico ged_ejb que está numa base oracle, o ged_ejb depende do rh_ejb, pois as classes referentes aos dados do funcionario, cargo, setor já estão no sistema de rh, para satisfazer esta dependência, encapsulamos os dois ejbs dentro de um ear, e adicionamos o rh_ejb no manifest entries do ged_ejb, até aqui sem problemas para usar por exemplo a classe funcionario, dentro do ged_ejb fazemos assim por exemplo:
@Entity
public class Documento{
@Id
private Long documentoId;
@Transient
private Funcionario funcionario;
@Column(name="funcionario_id")//chave estrangeira para a tabela funcionario que está em outro database
private Long funcionarioId;
//....
}
@Stateless
public class DocumentoDAO{
@PersistenceContext
private EntityManager manager
@EJB
private FuncionarioDAO funcDAO;
public Documento findById(Long id)
Documento documento = manager.find(Documento.class, id) ;
Funcionario f = funcDao.findById(documento.getFuncionarioId());
documento.setFuncionario(f);
return documento;
}
Isso funciona, mas fica parecendo um pouco com gambiarra, é possível fazer o mapeamento objeto relacional direto entre classes que estejam em projetos ejb diferentes? mesmo que estejam em bancos diferentes ou apenas em schemas diferentes em um mesmo banco?