Galera,
estou com um problema pra desenvolver uma aplicação que usa múltiplos bancos de dados. Na minha aplicação web, preciso que cada usuário tenha uma base de dados no mysql. Por exemplo:
usuário aplicação => banco de dados
root => bd_root
admin => bd_admin
user => bd_user
Os usuários poderão se cadastrar no sistema, portanto eu já tenho uma forma de criar automaticamente a base de dados quando o usuário se cadastra. Até aí tudo bem… No entanto, estou com alguns problemas na hora de criar o entityManager.
Primeiramente, preciso de criar o entityManager em tempo de execução sem a necessidade de um persistence.xml. Acho que isso é possível, mas vi em algumas outras fontes dizendo que não tem como. Aparentemente é só criar um Properties e passar para entityManagerFactory. Temo como fazer isso, certo?
Segundo e mais importante: preciso de saber qual usuário usa qual entityManager. Pensei em montar um hashmap<String, EntityManager> estático e guardar na sessão do usuário um atributo com a chave string para o entityManager a ser usado. Percebi que desse modo vou ter que criar e destruir esses objetos todos na mão e isso me pareceu uma má ideia porque vou deixar entityManager desnecessariamente na memória, a criação desses objetos é custosa, etc. Alguma solução melhor do que essa?
PS: Colocar tudo em uma base de dados só não é uma solução.