Persistência Java: Hibernate e JPA

14,078 views

Published on

Palestra sobre persistência em Java com Hibernate e JPA

Published in: Technology
1 Comment
20 Likes
Statistics
Notes
  • nice draft i like it
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
14,078
On SlideShare
0
From Embeds
0
Number of Embeds
120
Actions
Shares
0
Downloads
0
Comments
1
Likes
20
Embeds 0
No embeds

No notes for slide

Persistência Java: Hibernate e JPA

  1. 1. Persistência no JAVA - Hibernate e JPA - Sérgio Lopes - @sergio_caelum sergio.lopes@caelum.com.br
  2. 2. Como você grava no seu banco de dados?
  3. 3. mysql código
  4. 4. acessando via C /* Connect to database */ if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) { fprintf(stderr, "%sn", mysql_error(conn)); exit(1); } /* send SQL query */ if (mysql_query(conn, "show tables")) { fprintf(stderr, "%sn", mysql_error(conn)); exit(1); } res = mysql_use_result(conn); /* output table name */ printf("MySQL Tables in mysql database:n"); while ((row = mysql_fetch_row(res)) != NULL) printf("%s n", row[0]);
  5. 5. Considerações • +Performance • -Manutenção
  6. 6. lib_mysql ??? Vamos ver código dessa evolução!
  7. 7. código java JDBC driver mysql
  8. 8. acessando via JDBC try { String userName = "testuser"; String password = "testpass"; String url = "jdbc:mysql://localhost/test"; Class.forName ("com.mysql.jdbc.Driver").newInstance (); conn = DriverManager.getConnection (url, userName, password); System.out.println ("Database connection established"); } catch (Exception e) { System.err.println ("Cannot connect to database server"); } finally { if (conn != null) { try { conn.close (); System.out.println ("Database connection terminated"); } catch (Exception e) { /* ignore close errors */ } } }
  9. 9. Considerações • ++Extensibilidade • +Manutenção • -Performance
  10. 10. código java Hibernate JDBC driver mysql Mapeamento Objeto/Relacional (ORM)
  11. 11. acessando via Hibernate Livro livro = new Livro(); session.save(livro);
  12. 12. Considerações • ++Extensibilidade • +Manutenção • -Performance
  13. 13. Livro l = new Livro(); l.setNome("Alice no País das Maravilhas"); l.setDescricao("Um excelente livro"); Session session = //.... session.beginTransaction(); session.save(l); session.getTransaction().commit();
  14. 14. Livro l = new Livro(); l.setNome("Alice no País das Maravilhas"); l.setDescricao("Um excelente livro"); Session session = //.... session.beginTransaction(); session.save(l); session.getTransaction().commit();
  15. 15. Livro l = new Livro(); l.setNome("Alice no País das Maravilhas"); l.setDescricao("Um excelente livro"); Session session = //.... session.beginTransaction(); session.save(l); session.getTransaction().commit();
  16. 16. Livro l = new Livro(); l.setNome("Alice no País das Maravilhas"); l.setDescricao("Um excelente livro"); Session session = //.... session.beginTransaction(); session.save(l); session.getTransaction().commit();
  17. 17. Livro l = new Livro(); l.setNome("Alice no País das Maravilhas"); l.setDescricao("Um excelente livro"); Autor a = new Autor(); a.setNome("Lewis"); a.setSobrenome("Carroll"); l.setAutor(a); Session session = //.... session.beginTransaction(); session.save(a); session.save(l); session.getTransaction().commit();
  18. 18. código java Hibernate JDBC driver mysql
  19. 19. Hibernate TopLink código java JPA OpenJPA JDBC driver mysql EclipseLin k
  20. 20. Hibernate TopLink código java JPA OpenJPA JDBC driver mysql EclipseLin k
  21. 21. Hibernate TopLink código java JPA OpenJPA JDBC driver mysql EclipseLin k Abstraindo a abstração da abstração! Socorro!
  22. 22. acessando via JPA Livro livro = new Livro(); manager.persist(livro); Migrar de Hibernate -> JPA?
  23. 23. Problemas • Mais uma camada! • Não tem tudo do Hibernate
  24. 24. lib_mysql jdbc hibernate jpa ???
  25. 25. seu BD é a prova de balas?
  26. 26. seu BD é a prova de balas?
  27. 27. Relational DBs - Seguro - Consistente - Integro - Relacional
  28. 28. NO RELATIONAL relational DBs - rapido - escalavel - SIMPLES - confiavel?
  29. 29. Migrando para o Google App Engine!
  30. 30. BigTable API // Get a handle on the datastore itself DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); // Lookup data by known key name Entity userEntity = datastore.get(KeyFactory.createKey("UserInfo", email)); // Or perform a query Query query = new Query("Task", userEntity); query.addFilter("dueDate", Query.FilterOperator.LESS_THAN, today); for (Entity taskEntity : datastore.prepare(query).asIterable()) { if ("done".equals(taskEntity.getProperty("status"))) { datastore.delete(taskEntity); } else { taskEntity.setProperty("status", "overdue"); datastore.put(taskEntity); } } “só” aprender mais uma API!
  31. 31. #
  32. 32. JPA para BigTable #FTW <provider> org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider </provider>
  33. 33. Acessando BigTable com JPA Livro livro = new Livro(); manager.persist(livro);
  34. 34. Tá migrado!
  35. 35. Conclusão • SQL queries difíceis • ORM para o dia a dia • NoSQL para escalabilidade, disponibilidade • libC para insanidade • Java sempre :)
  36. 36. Obrigado! Sérgio Lopes - @sergio_caelum sergio.lopes@caelum.com.br
  37. 37. FJ-11 Java e Orientação a Objetos Laboratório Java com testes, FJ-16 XML e Design Patterns FJ-21 Java para desenvolvimento Web Preparatório para certificação FJ-19 de programador Java FJ-25 Persistência com JPA2 e Hibernate FJ-26 Laboratório Web com JSF2 e CDI FJ-31 Java EE avançado e Web Services

×