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.

71 ENTITY MANAGER1415 manager . close ();16 factory . close ();17 }18 }Código Java 3.72: AdicionaConta.javaExecute e verifique a tabela Conta.42 Simule o problema de concorrência entre Entity Managers adicionando a seguinte classe nopacote br.<strong>com</strong>.k19.testes.1 public class TestaAcessoConcorrente {2 public static void main ( String [] args ) {3 EntityManagerFactory factory = Persistence4 . createEntityManagerFactory (" K21_entity_manager_pu ");56 EntityManager manager1 = factory . createEntityManager ();7 EntityManager manager2 = factory . createEntityManager ();89 manager1 . getTransaction (). begin ();10 manager2 . getTransaction (). begin ();1112 Conta conta1 = manager1 . find ( Conta .class , 1L);1314 conta1 . setSaldo ( conta1 . getSaldo () + 500) ;1516 Conta conta2 = manager2 . find ( Conta .class , 1L);1718 conta2 . setSaldo ( conta2 . getSaldo () - 500) ;1920 manager1 . getTransaction (). <strong>com</strong>mit ();21 manager2 . getTransaction (). <strong>com</strong>mit ();2223 manager1 . close ();24 manager2 . close ();25 factory . close ();26 }27 }Código Java 3.73: TestaAcessoConcorrente.javaExecute e verifique que o saldo final da conta <strong>com</strong> identificador 1 é 1500, mas o correto seria2000.Locking OtimistaPara solucionar o problema da concorrência entre Entity Managers, podemos aplicar a idéia deLocking Otimista. Nessa abordagem, um atributo para determinar a versão dos registros é acrescentadona entidade. Esse atributo deve ser anotado <strong>com</strong> @Version e seu tipo deve ser short, int, long,Short, Integer, Long ou java.sql.Timestamp.1 @Entity2 public class Conta {34 @Id5 @GeneratedValue6 private Long id;78 private double saldo ;www.k19.<strong>com</strong>.br 71

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

Saved successfully!

Ooh no, something went wrong!