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.

117 CRITERIAExercícios de Fixação12 Faça uma consulta para obter todos os autores e seus respectivos livros. No pacote br.<strong>com</strong>.k19.testesdo projeto K19-Criteria, crie a classe ListaAutoresELivros.1 public class ListaAutoresELivros {2 public static void main ( String [] args ) {3 EntityManagerFactory factory = Persistence4 . createEntityManagerFactory (" K21_criteria_pu ");5 EntityManager manager = factory . createEntityManager ();67 CriteriaBuilder cb = manager . getCriteriaBuilder ();8 CriteriaQuery c = cb. createQuery ( Autor . class );9 Root a = c. from ( Autor . class );10 c. select (a);1112 TypedQuery query = manager . createQuery (c);13 List autores = query . getResultList ();1415 System . out . println ();1617 for ( Autor autor : autores ) {18 System . out . println (" Autor : " + autor . getNome ());19 Collection livros = autor . getLivros ();2021 for ( Livro livro : livros ) {22 System . out . println (" Livro : " + livro . getNome ());23 }24 System . out . println ();25 }2627 manager . close ();28 factory . close ();29 }30 }Código Java 5.70: ListaAutoresELivros.javaExecute e observe, no console, a quantidade de consultas realizadas.13 Altere a classe ListaAutoresELivros para reduzir a quantidade de consultas ao banco de dados.Aplique o <strong>com</strong>ando fetch join na consulta de autores.1 public class ListaAutoresELivros {2 public static void main ( String [] args ) {3 EntityManagerFactory factory = Persistence4 . createEntityManagerFactory (" K21_criteria_pu ");5 EntityManager manager = factory . createEntityManager ();67 CriteriaBuilder cb = manager . getCriteriaBuilder ();8 CriteriaQuery c = cb. createQuery ( Autor . class );9 Root a = c. from ( Autor . class );10 a. fetch (" livros ", JoinType . LEFT );11 c. select (a). distinct ( true );1213 TypedQuery query = manager . createQuery (c);14 List autores = query . getResultList ();1516 System . out . println ();1718 for ( Autor autor : autores ) {19 System . out . println (" Autor : " + autor . getNome ());20 Collection livros = autor . getLivros ();www.k19.<strong>com</strong>.br 117

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

Saved successfully!

Ooh no, something went wrong!