Acesso multiplo banco com JPA(Hibernate)

Pessoal,

como eu faço com JPA (@PersistenceContext) acesar multiplo banco, pois tenho um aplicação que quando o usuario loga no sistema e depedendo do seu login, será logado em um banco de dados.

obrigado

Amigo até onde eu sei não tem como um PersistenceContext acessar mais de um banco, o que voce pode ter é vários PersistenceContext na sua aplicação.
Ou dependendo do banco de dados que voce utiliza pode ter vários esquemas em um único banco de dados tipo Postgres, Oracle

hum, estou pesquisando aqui no google para ver se acho algo.

O problema de ter varias PersistenceContext é que eu queria que fosse automatico, se eu criar um usuario e outro banco, ja refletisse na aplicação.
Quando eu falei um banco, pode ser um esquema tbm, como do oracle, postgres, mysql.

obrigado

Bom dia Brother!!

Você ja tentou passar um valor como parametro para o Persistence.xml quando vc for pegar o entityManagerFactory?.
Para que ele veja qual o banco que vc gostaria de entrar??

Vou esperar sua resposta da minha primeira pergunta para detalhar mais do assunto, se nao eu coloco um monte de coisa aqui e vc me diz que ja fez, aih fiko com cara de ué…sacou? rsrsrsrsrs

Abraxxxx e fika na PEACE DO LORD!

E ae cara,

pelo o que eu tenho visto na net, acho que vou ter que criar o EntityManager na mão mesmo viu… :?

vlw

mas vc chegou a ver como enviar o parametro para o persistence.xml?

Abraxx

entao cara,

acho q passar como parametro valores para o persistence.xml não seria o problema, mas sim, como eu faria injeção do @PersistenceContext com o persistence.xml sendo preenchido em tempo de execução.

vlw

Brother…

Da uma olhada no meu método que retorna um entityManagerFactory em tempo de execução:

public static EntityManagerFactory getEntityManagerFactory(Funcionario funcionario) {
        // variaveis locais
        Properties prop;
        EntityManagerFactory emf = null;
        try {
            // tenta pegar a conexao, deste usuario se existir
            emf = mapEntityManagerFactory.get(funcionario.getFunlogin());
            // se a conexao nao existir, ela e criada
            if (emf == null) {
                prop = new Properties();
                prop.put("hibernate.connection.username", funcionario.getFunlogin());
                prop.put("hibernate.connection.password", funcionario.getFunsenha());
                emf = Persistence.createEntityManagerFactory("MINHAPU", prop);
                mapEntityManagerFactory.put(funcionario.getFunlogin(), emf);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return emf;
    }

Eu seto dois parametros para a PersistenceUnit e da mesma maneira imagino que consiga setar o parametro:


<property name="hibernate.connection.url" value="jdbc:seu caminho para o banco de dados aqui"/>

entendeu brother??

V c isso te ajuda, vlw?? Qualquer problema eu to aki pra ajudar!

Abrax e fika na PEACE DO LORD!!

1 curtida

isso q eu tava falando…rsrs

ter que criar o entitymanager na mão msm… :slight_smile:

eu queria saber se teria uma outra forma de fazer com anotação, mas acho que nao vai ter nao. :frowning:

vlw

Ahhhhhhhhh…

entendi o que c tava falanuh…PUTS…entao brother…aih ja imagino que seu problema esta mais complicado que o meu…hahaha…

Isso acho que realmente só criando na mão mesmo…hahaha…puts… :shock:

mas aproveitando a deixa, sera que poderia me ajudar na minha duvida??

http://www.guj.com.br/java/248978-duvida-sobre-pk-e-erro-ao-inserir-no-banco-de-dados-usando-pk-gerado-pelo-netbeans

Agradeço antecipadamente! rsrsrs

OBS: me desculpe a teimosia ao insistir sobre a sua duvida…uhauhauha…

Abrax e fique na PEACE DO LORD!

Da uma olhadinha aki…se ja viw isso??

http://pt.w3support.net/index.php?db=so&id=991750

O cara ta falanuh no final do artigo que teria que criar algo como JNDI, tem noçaõ de como isso funciona? rsrsrs
E tbm fala de criar arquivo properties no contexto da aplicacao para mudar o persistence…
Qlqr novidade me fala…vlw?

Abraxxx

vou dar uma olhada aqui no link,

respondi sua pergunta no seu post.

t+

meu brother!!

e aih carinha…ajudo alguma coisa o que te mandei, ou ta precisando de mais alguma coisa??

Maninhow…só para constar…sobre a duvida que vc me esclareceu: [size=18]vc eh SHOWWWWWWWWWW!!![/size][color=red] [/color]

Vlw brother…ajudo e mtoo…acabei de testar e [color=green]funfo[/color] showww!!

DEUS te abençoe brother!!

Abraxxxxxxxxx e fika na PEACE DO LORD!!

aquilo não realmente o que tava precisando não,

mas vou fazer tudo na mão msm, vlw cara
precisando tamo ai…

flw

Cara,

Desculpe incomodar mas estou com uma outra dúvida de uma coisa que ja tenho feito durante o desenvolvimento, será que poderia me ajudar?

Eu trabalho com usuarios no banco de dados para conseguir ter o log de uma “auditoria” pelo proprio banco, sendo que cada usuario do banco de dados eh um usuario que tem acesso ao sistema, tudo bem até agora??

Aí quando o usuario irá acessar o sistema, eu crio um método EntityManagerFactory que me traz o EntityManagerFactory correspondente ao usuario que esta logado no momento, através dakele código que te mandei com os parametros sendo enviados para o persistence.xml e o coloca em uma Map onde fika guardado este EMFactory onde enquanto o usuario estiver logado eu utilizo esta EMfactory trazendo soh o EManager dela para consultar/salvar e etc…

Mas para que eu consiga utilizar este usuário eu fico passando ele de um ManagedBean para outro e assim eu tenho ele o tempo inteiro comigo e posso fazer as modificações necessárias aonde kiser fazer com o usuário certo.

O que vc acha desta maneira que utilizo? Precária, problemática ou boa?
Eu estranho algumas coisas que faço as vezes, mas depois de pesquisar, eu ateh vejo que pessoas utilizam de algumas técnicas que eu faço e isso me deixa mais trankilo, mas sobre o funcionário eu nao tenho muito onde pesquisar, será que vc poderia me dar uma ajudinha ou soh um empurraozinho para que eu veja se isso esta ou nao correto e caso nao esteja eu modifique para que nao me causa problemas futuramente?

Muito Obrigado mesmo pela atenção.

Abraxxxxxxx e Fique na PEACE DO LORD!

esses seus usuarios são fixos?
se sim, e tiver usando EJB, vc pode usar o @PersistenceContext para cada um e tendo um persistence-unit para cada tbm e fazer um factory para retornar uma instancia entityManager de acordo com o usuario logado.

se não, vc vai cair no mesmo caso do meu. pode ser um singleton para vc envitar ficar passando pelo ManagedBean

public class JPAUtil {

	private static JPAUtil jpaUtil;
	private EntityManagerFactory emf;

	private JPAUtil() {			
		Map<String, Object> configuracao = new HashMap<String, Object>();
		configuracao.put("hibernate.connection.url", "jdbc:postgresql://localhost:5432/"+banco);//verificar a melhor forma como vc vai passar os parametros, banco, usuario, senha
		configuracao.put("hibernate.connection.username", usuario);
		configuracao.put("hibernate.connection.password", senha);
		
		emf = Persistence.createEntityManagerFactory("PERSISTENCE-UNIT-NAME", configuracao);
	}

	public static JPAUtil getInstance() {
		if (jpaUtil == null) {
			jpaUtil = new JPAUtil();
		}
		return jpaUtil;
	}

	public EntityManager getEntityManager() {
		return emf.createEntityManager();
	}
	
	public void finalizar(){
		this.emf = null;
	}
}

espero ter te ajudado

flw

salve galera,

primeira postagem minha=)
estou fazendo um programa java swing com hibernate tudo bem mapeado com anotacaoes e tudo,
deu muito trabalho,
agora o meu problema parece o do pessoa,

eu estou fazendo a conexao pela hibermate.cfg.xml
e logo um unico usuario, o que preciso agora é pode logar multiplos usuario,

agradeco qualquer dica de tutorial ou um exemplo de codigo.

eu tambem fiquei um pouco confuso com o hibernate util, nao entendi exatamete aonde ele pegar o hibernate.cfg.xml
alguem saberia?

[code]public class HibernateUtil {

private static final SessionFactory sessionFactory;

static {
    try {
        // Create the SessionFactory from standard (hibernate.cfg.xml) 
        // config file.
        sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
    } catch (Throwable ex) {
         System.err.println("Initial SessionFactory creation failed." + ex);
        throw new ExceptionInInitializerError(ex);
    }
}
public static SessionFactory getSessionFactory() {
    return sessionFactory;
}

}
[/code]

[quote=alexandrequeiroz]eu tambem fiquei um pouco confuso com o hibernate util, nao entendi exatamete aonde ele pegar o hibernate.cfg.xml
alguem saberia?

[code]public class HibernateUtil {

private static final SessionFactory sessionFactory;

static {
    try {
        // Create the SessionFactory from standard (hibernate.cfg.xml) 
        // config file.
        sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
    } catch (Throwable ex) {
         System.err.println("Initial SessionFactory creation failed." + ex);
        throw new ExceptionInInitializerError(ex);
    }
}
public static SessionFactory getSessionFactory() {
    return sessionFactory;
}

}
[/code][/quote]
O comentario ja diz que é a linha abaixo.