Hibernate controla concorrência?

3 respostas
C

gostaria de saber se o Hibernate controla a concorrência de muitos usuários logados utilizando o mesmo entity manager
to fazendo um erp e tah na hora de fazer isso
to meio na duvida como fazer… atualmente o jeito q tah eu to dando Flush a cada insert, update e delete no banco… e iria controlar a concorrenica sincronizando os metodos java

mas o hibernate sem o flush ele mantem as entidades na memoria, e tenho duvidas se posso confiar no hibernate pra ele controlar pra mim

minha ideia eh ter por exemplo, 3 persistence units armazenadas em um mapa de cache (talvez um list… mas melhor um mapa acho), e de acordo com os dados q o usuario logar no sistema eu escolho o entity manager certo no mapa… dai o usuario (sem o flush) salva, (atualiza ou delte), e o entity manager controla na memoria esse objeto ateh ele ser persistido…
(duvida )mas e se outra pessoa logada fazer select nesse objeto na memoria q tah sendo mexido pelo usuario? o hibernate persiste ele antes? posso confiar no hibernate assim? (afinal um software fiscal tem q ter 100% de certeza q a operacao vai sercorreta)

ouvi q tem como fazer isso direto com o jndi tb
poderiam me dar sugestoes?
valeu

3 Respostas

G

Direto da fonte: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/transactions.html

L

Não! Um EntityManager é único por transação.

O PersistenceUnit é único para cada configuração de banco, ou seja, a menos que você tenha 3 bancos, não vale a pena ter 3 PersistenceUnits. O que você tem que ter é, a cada requisição de usuário, obter um EntityManager pelo EntityManagerFactory. E não deixar conexões ativas em espera, porque isso impacta em desempenho.

C

garcia-jj, valeu pelo link… melhor q isso nao tem… depois do trampo com certeza vou da uma lida

Leonardo3001 , eh justamente isso q eu quero
eu vou ter uns 20 banco de dados no meu servidor… vou usar o jboss pra isso… nesse caso vou precisar dos 20 persistence units
sao muitos clientes travbalhando em um servidor
por isso pensei num cache de mapa… pra cada cliente dou um codigo e cada persistence unit tem esse codigo como chave no mapa
dai qd o cara loga no sistema, informa essa chave, e eu busco o persistence unit correto no mapa, e uso esse PU pra fazer a persistencia no banco certo

vc conhece algo melhor pra fazer isso?
nao teria alguma forma de bindar o entity manager com jndi , alguma coisa assim
to aberto a sujestoes :smiley:
valeu

Criado 7 de junho de 2010
Ultima resposta 7 de jun. de 2010
Respostas 3
Participantes 3