11.07.2015 Views

Persistência com JPA2 e Hibernate - Inpi

Persistência com JPA2 e Hibernate - Inpi

Persistência com JPA2 e Hibernate - Inpi

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ENTITY MANAGER 44Para confirmar uma transação, devemos usar o método <strong>com</strong>mit(). Quando esse método é invocado,ocorre uma sincronização <strong>com</strong> o banco de dados e a transação é finalizada.1 manager . getTransaction (). begin ();2 . . .3 manager . getTransaction (). <strong>com</strong>mit ();Código Java 3.1: Iniciando e confirmando uma transaçãoCom uma transação ativa, também podemos disparar uma sincronização através do métodoflush(). Apesar dos dados serem enviados para o banco de dados, eles não ficarão visíveis paraoutras transações. Esses dados serão considerados apenas nas consultas efetuadas dentro da própriatransação. Diversas chamadas ao método flush() podem ser efetuadas dentro de uma mesmatransação.1 manager . getTransaction (). begin ();2 . . .3 manager . flush ();4 . . .5 manager . getTransaction (). <strong>com</strong>mit ();Código Java 3.2: Sincronizações parciais através do método flush()Toda modificação, remoção ou inserção realizada no banco de dados devido às chamadas aométodo flush() podem ser desfeitas através do método rollback(). Uma chamada a esse métodotambém finaliza a transação.1 manager . getTransaction (). begin ();2 . . .3 manager . flush ();4 . . .5 manager . getTransaction (). rollback ();Código Java 3.3: Sincronizações parciais através do método flush()Flush ModeHá duas políticas adotadas pelos provedores JPA em relação às sincronizações: FlushModeType.AUTO(padrão) e FlushModeType.COMMIT. No modo AUTO, o provedor JPA realiza sincronizaçõesautomáticas antes de uma operação de consulta para garantir que as modificações, remoções e inserçõesainda não sincronizadas sejam consideradas na consulta. Já o <strong>com</strong>portamento no modoCOMMIT não está especificado. Consequentemente, cada provedor pode implementar o <strong>com</strong>portamentoque achar mais adequado.Podemos configurar o flush mode no nível de um Entity Manager afetando o <strong>com</strong>portamento emtodas as consultas realizadas através desse Entity Manager ou configurar apenas para uma consulta.1 manager . setFlushMode ( FlushModeType . COMMIT );Código Java 3.4: Configurando o flush mode de um Entity Manager1 query . setFlushMode ( FlushModeType . COMMIT );2 query . setFlushMode ( FlushModeType . AUTO );Código Java 3.5: Configurando o flush mode de uma consulta44 www.k19.<strong>com</strong>.br

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!