segunda-feira, 31 de maio de 2010

Re: [java-br] Re: primeira transacao lenta - jpa hibernate

·

Eu colocaria as operações de transação fora do método persist().
pois provavelmente você chamará o persist() várias vezes, de várias
entidades diferentes.
e você quer realmente que comitte somente após todas essas operações derem
certo.

um exemplo pra centralizar o EntityManagerFactory:

class PersistenceUtil {
..private static EntityManagerFactory emf;
..static {
....emf = Persistence.createEntityManagerFactory("jpa_hibernate");
..}
..public static EntitiyManager getEntityManager() {
....return emf.createEntityManager();
..}
}

desta forma, você garante que terá apenas uma instância de
EntityManagerFactory que será instanciada no momento do carregamento da
classe, e sempre que quiser uma instância de EntityManager é só chamar o
método factory getEntityManager().

e pra vc controlar suas transações de uma forma melhor, você pode fazer:

EntityManager em = PersistenceUtil.getEntityManager();
DAO dao = new GenericDAO(em); // construtor que recebe um entitymanager
em.getTransaction().begin();
dao.persist(entidade1);
dao.persist(entidade2);
dao.persist(entidade3);
em.getTransaction().commit();

agora você tem certeza que os dados só serão commitados após as 3 operações
serem efetuadas com sucesso.

Em 30 de maio de 2010 11:12, ederson_cne <edersonn@hotmail.com> escreveu:

>
>
> pode dar um exemplo de
> como ficará o codigo separando a geracao do entitymanager do DAO Generico ?
>
> public GenericDAO(){
> emf = Persistence.createEntityManagerFactory("jpa_hibernate");
> em = emf.createEntityManager();
> }
>
>
> public void persist(Object object) {
> em.getTransaction().begin();
> try {
> em.persist(object);
> em.getTransaction().commit();
> } catch (Exception e) {
> e.printStackTrace();
> em.getTransaction().rollback();
> } finally {
> em.close();
> }
> }
>
> --- Em java-br@yahoogrupos.com.br <java-br%40yahoogrupos.com.br>, Danilo
> Akamine <danilowz@...> escreveu
>
> >
> > a primeira transação fica lerda devido ao carregamento do
> > EntityManagerFactory.
> > A instanciação do EntityManager não é tão custosa.
> >
> > Então é só vc instanciar o EntityManagerFactory no início da aplicação
> > (main), antes mesmo de utilizar uma transação c/ EntityManager.
> > E confirme se você tem realmente só 1 instância de EntityManagerFactory.
> >
> >
> >
> > Em 27 de maio de 2010 21:52, ederson silva <edersonn@...> escreveu:
>
> >
> > >
> > >
> > >
> > >
> > >
> > > olá, estou començando uma aplicacao java desktop usando jpa/hibernate
> mas a
> > > primeira transacao (persistencia) fica lenta pq gera o entity manager,
> lê o
> > > arquivo persistence.xml.
> > >
> > > nao tem como eu ler o persistence qdo chamar o menu ou na tela de
> splash
> > > screen ? como seria ?
> > >
> > > eu tenho um bean cliente e um dao generico para persistir.
> > >
> > > __________________________________________________________
> > > VOCÊ PODE TER 25 GB GRATUITOS PARA ARMAZENAR SEUS ARQUIVOS NA WEB. VEJA
> > > AQUI COMO.
> > >
> > >
> http://www.windowslive.com.br/public/product.aspx/view/1?cname=skydrive&ocid=Hotmail:MSN:Messenger:Tagline:1x1:skydrive:-
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> > >
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
>
>
>


[As partes desta mensagem que não continham texto foram removidas]

------------------------------------

Para sair da lista, envie email para: java-br-unsubscribe@yahoogroups.com
Para upload/download de arquivos: http://www.yahoogroups.com/files/java-brLinks do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/java-br/

<*> Para sair deste grupo, envie um e-mail para:
java-br-unsubscribe@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html

0 comentários:

Pague com LPs do Mister Colibri

Pague com LPs do Mister Colibri
Quer comprar celular,Tablet,pen drive, GPS e muito outros produtos e ainda podendo pagar tudo em LPs ?Pois saiba que isso é possível,basta você visitar o site downloadstotal.com e realizar a sua compra com toda tranquilidade e segurança!!!

Hora

Online

Arquivo do Blog