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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

91 JPQLmodificados ou removidos.1 Pessoa p = manager . find ( Pessoa .class , 1L);2 p. setNome (" Rafael Cosentino ");1 Pessoa p = manager . find ( Pessoa .class , 1L);2 manager . remove (p);Em alguns casos, essa abordagem não é a mais eficiente. Por exemplo, suponha que uma aplicaçãoque controla os produtos de uma loja virtual necessite atualizar os preços de todos os produtos<strong>com</strong> uma taxa fixa.1 TypedQuery < Produto > query = manager . createNamedQuery (" Produto . findAll ");2 List < Produto > produtos = query . getResultList ();3 for ( Produto p : produtos ) {4 double preco = p. getPreco ();5 p. setPreco ( preco * 1.1) ; // 10% de aumento6 }Todos os produtos seriam carregados e isso seria sobrecarregaria a rede, pois uma grande quantidadede dados seria transferida do banco de dados para a aplicação, e a memória, pois muitosobjetos seriam criados pelo provedor JPA.A abordagem mais eficiente nesse caso é realizar uma operação em lote (bulk operation). Umaoperação em lote é executada no banco de dados sem transferir os dados dos registros para a memóriada aplicação.1 Query query = manager . createQuery (" UPDATE Produto p SET p. preco = p. preco * 1.1 ");2 query . executeUpdate ();A mesma estratégia pode ser adotada quando diversos registros devem ser removidos. Não énecessário carregar os objetos na memória para removê-los, basta realizar uma operação em lote.1 Query query = manager . createQuery (" DELETE Produto p WHERE p. preco < 50");2 query . executeUpdate ();Exercícios de Fixação22 No pacote br.<strong>com</strong>.k19.modelo do projeto K19-JPQL, adicione a seguinte classe:1 @Entity2 public class Produto {34 @Id @GeneratedValue5 private Long id;67 private String nome ;89 private Double preco ;1011 // GETTERS E SETTERS12 }Código Java 4.52: Produto.javawww.k19.<strong>com</strong>.br 91

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

Saved successfully!

Ooh no, something went wrong!