<Insert Picture Here>Tutorial MySQL com Java                                Airton Lastori                          airton...
Alguns clientes MySQL Web & Enterprise           OEM & ISVs                    Cloud                     2
Várias Indústrias             mysql.com/customers                       3
Quando usar MySQL?        4
Resumo: onde o MySQL se encaixa• Novas aplicações e aplicações customizadas Ad-hoc    •   principalmente arquitetura Web (...
MySQL em Aplicações Enterprise                                         Aplicações Corporativas de Missão CríticaImportanci...
Quando custa o MySQL?          7
Portfolio Open Source (GPL)• MySQL Database (Community Server)         5.5.27 GA e 5.6.6 DMR• MySQL Cluster (NDB Community...
MySQL Enterprise Edition.Indicado para empresas ou pessoas físicas que pretendemaumentar produtividade, diminuir riscos e ...
Arquitetura do MySQL
MySQL Database     Performance, Confiabilidade, Facilidade de Uso                                                Gerenciam...
InnoDB no MySQL- Storage Engine mais utilizado    - aplicações Web 2.0    - aplicações de varejo    - aplicações de entret...
Como instalar o MySQL?
MySQL Installer for Windows• Interface gráfica nativa do  Windows• Todos produtos MySQL para  desenvolvimento em UM único ...
MySQL Installer for Windows   Selecione                  Atualize                               Configuremysql.com/downloads
No Linux ou Mac, prefira os binários       mysql.com/downloads/mysql
Tutorial MySQL em 10 minutosslideshare.net/MySQLBR/mysql-em-10min-alexandre-almeida-hti-tecnologia
No Linux ou Mac, instale também oConnector/J    mysql.com/downloads/connector/j
Teste via MySQL Workbench 1/2
Teste via MySQL Workbench 2/2
Teste via MySQL Client(opcional)C:Program FilesMySQLMySQL Server 5.5bin>mysql -uroot -pEnter password: ****Welcome to the ...
Administre via MySQL Workbench 1/3
Administre via MySQL Workbench 2/3
Administre via MySQL Workbench 3/3
Parar ou Iniciar o servidor MySQL(opcional)Ou via MySQL Notifier
Tudo certo com seu ambiente Java? 1/2Instalar e configurar JDK e pathoracle.com/technetwork/java/javase/downloads
Tudo certo com seu ambiente Java? 2/2JDK e path configuradosC:Program FilesMySQLMySQL Server 5.5bin>java -versionjava vers...
Hello world MySQL!
Adicione o driver MySQL ao CLASSPATHcaminho completo do .jarConfira:C:>set CLASSPATHCLASSPATH=.;C:Program Files (x86)Javaj...
HelloMysql.java 1/2import java.sql.*;public class HelloMysql { public static void main(String args[]){ System.out.println(...
HelloMysql.java 2/2   Statement stmt = con.createStatement();   //objeto Statement   ResultSet rs;       //objeto ResultSe...
java HelloMysqlC:tutorial>javac HelloMysql.javaC:tutorial>java HelloMysqlTentando conectar ao MySQL...URL: jdbc:mysql://lo...
Revisão: Conceitos importantes• Como conectar o Java ao MySQL• Entender o CLASSPATH                         34
Revisão: conectando o Java ao MySQL• O driver JDBC é chamado MySQL Connector/J   • Desenvolvido pela Oracle sob licença GP...
Revisão: Entendendo o CLASPATH• O classpath é o local onde o Java procura por código  compilado (biblioteca)• Há locais pa...
Crie um usuário no MySQL.            37
Criando usuário      public User createUser(Connection c, String                   } catch (SQLException sqlEx) {login, St...
Arquitetando para o sucesso        com MySQL!          Applications start small          If they’re successful, they don’t...
Arquitetando para o SucessoUm Anti-Pattern                                  Presentation                                  ...
Arquitetando para o Sucesso    Um Anti-PatternQuero usar uma lógica daqui…                                  Presentation  ...
Arquitetando para o SucessoComece limpo                Presentation               Business Logic                Persistenc...
Arquitetando para o Sucesso       Comece limpo                       PresentationTransactions                      Busines...
Arquitetando para o Sucesso          Comece limpo                          PresentationTransactions                       ...
Arquitetando para o Sucesso          Comece limpo                          Presentation    } Test thisTransactions        ...
Arquitetando para o SucessoUse ferramentas adequadas• Using Maven to manage the depedencies/build• Using SpringFramework  ...
Arquitetura em Camadas    Exemplo Criar Usuário         @Override     public User createUser(String login, String firstNam...
Como era no Raw JDBC      public User createUser(Connection c, String                   } catch (SQLException sqlEx) {logi...
Resolvendo erros comuns      com MySQL!           65
Class not found• java.lang.ClassNotFoundException: com.mysql.jdbc.Driver   • The driver is not in your CLASSPATH   • Stand...
No Suitable Driver• SQLException: No suitable driver    • Check your URL, compare to the documentation at     http://dev.m...
Out of Memory• java.lang.OutOfMemoryError when reading results    • Your result set is too large, Connector/J buffers resu...
Communications Exceptions• "The last packet sent successfully to the server was 0 milliseconds ago. The driver has not rec...
Devo migrar para MySQL?           70
MySQL Migration Tool                              Novo!• Wizard para migração de tabelas e dados:  • MS-SQL Server 2000, 2...
72
Próximos passos com MySQL            73
Referências• Use MySQL with Java http://dev.mysql.com/usingmysql/java/• Read Connector/J User Manual http://dev.mysql.com/...
MySQL Treinamento e Certificação       Treinamentos  MySQL DBA           MySQLDeveloper                CertificaçõesMySQL ...
Obrigado!@MySQLBR    facebook.com/MySQLBR   meetup.com/MySQL-BR                     76
Tutorial MySQL com Java
Upcoming SlideShare
Loading in...5
×

Tutorial MySQL com Java

20,325

Published on

Nesta apresentação venceremos os obstáculos comuns para iniciar o desenvolvimento em Java usando corretamente o MySQL como banco de dados. O MySQL é o banco de dados open source mais popular do mundo, usado em grandes sites como Facebook, Youtube, Twitter, Yahoo, Globo.com etc. Abordaremos tópicos como: baixar e instalar um servidor MySQL para desenvolvimento, preparar o banco de dados para uso com JDBC, escrever e testar seus primeiros programas Java com MySQL e funcionalidades específicas do driver Connector/J para um desenvolvimento e implantação mais eficiente.

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
20,325
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
336
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Tutorial MySQL com Java

  1. 1. <Insert Picture Here>Tutorial MySQL com Java Airton Lastori airton.lastori@oracle.com 08-out-2012
  2. 2. Alguns clientes MySQL Web & Enterprise OEM & ISVs Cloud 2
  3. 3. Várias Indústrias mysql.com/customers 3
  4. 4. Quando usar MySQL? 4
  5. 5. Resumo: onde o MySQL se encaixa• Novas aplicações e aplicações customizadas Ad-hoc • principalmente arquitetura Web (ex. Linux+Apache+MySQL+Java) • arquiteturas inovadoras, NoSQL (versão 5.6 e Cluster 7.2)• Aplicações híbridas • expansão de sistemas legados • MySQL como front-end e Oracle DB como back-end• Online e SaaS • E-commerce/OLTP e pagamentos digitais • Gerenciamento de Conteúdo (CMS) • Redes Sociais, mensagens e colaboração • Games Sociais e MMO • Gerenciamento de Sessão e Autenticação do usuário• Datamarts e Relatórios Departamentais• SMS, e-marketing, Infra Telecom, Infra TI• Embarcadas 5
  6. 6. MySQL em Aplicações Enterprise Aplicações Corporativas de Missão CríticaImportancia/Complexidade Finanças Globais, ERP, SCM, CRM, HR Aplicações Críticas para o Negócio Impacto no negócio, Interdepartamentais Aplicações Operacionais De suporte, Departamentais Corporativo Departamental 6
  7. 7. Quando custa o MySQL? 7
  8. 8. Portfolio Open Source (GPL)• MySQL Database (Community Server) 5.5.27 GA e 5.6.6 DMR• MySQL Cluster (NDB Community) 7.2.7 GA• MySQL Workbench Community Edition 5.2.40 GA • MySQL Utilities (em Python)• MySQL Connectors • ODBC, Java, .Net, C, C++, PHP, OpenOffice• MySQL Proxy 0.8.2 Alpha• Documentação: livre para uso, não coberto pela GPL• Forums dev.mysql.com/downloads 8
  9. 9. MySQL Enterprise Edition.Indicado para empresas ou pessoas físicas que pretendemaumentar produtividade, diminuir riscos e explorar maisa fundo e aumentar as capacidades do MySQL. Oracle Premier Lifetime Support MySQL Enterprise Oracle Product Security Certifications/Integrations MySQL Enterprise MySQL Enterprise Audit Monitor/Query Analyzer MySQL Enterprise MySQL Enterprise Scalability Backup MySQL Enterprise MySQL Workbench High Availability
  10. 10. Arquitetura do MySQL
  11. 11. MySQL Database Performance, Confiabilidade, Facilidade de Uso Gerenciamento Suporte às mais eficiente e multi- conhecidas thread de sessões plataformas/linguagens de desenvolvimentoParsing completoDML+DDL,otimizador,baseado em custo,caching de queriese resultados Várias opções de Storage Engine para necessidades específicas das aplicações Opções flexíveis de logging e armazenamento físico
  12. 12. InnoDB no MySQL- Storage Engine mais utilizado - aplicações Web 2.0 - aplicações de varejo - aplicações de entretenimento & mídia- ACID, transacional- Crash recovery- Integridade referencial- Suporta altos níveis de usuários concorrentes- No MySQL versão 5.5 - padrão - otimizado para hardware multi-core, multi-thread e SOs
  13. 13. Como instalar o MySQL?
  14. 14. MySQL Installer for Windows• Interface gráfica nativa do Windows• Todos produtos MySQL para desenvolvimento em UM único pacote • MySQL Database • MySQL Connectors • MySQL Workbench e exemplos de modelos • Exemplos de bancos de dados • Documentação• Alta integração de produtos, download sob demanda, funcionalidades de atualização
  15. 15. MySQL Installer for Windows Selecione Atualize Configuremysql.com/downloads
  16. 16. No Linux ou Mac, prefira os binários mysql.com/downloads/mysql
  17. 17. Tutorial MySQL em 10 minutosslideshare.net/MySQLBR/mysql-em-10min-alexandre-almeida-hti-tecnologia
  18. 18. No Linux ou Mac, instale também oConnector/J mysql.com/downloads/connector/j
  19. 19. Teste via MySQL Workbench 1/2
  20. 20. Teste via MySQL Workbench 2/2
  21. 21. Teste via MySQL Client(opcional)C:Program FilesMySQLMySQL Server 5.5bin>mysql -uroot -pEnter password: ****Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 8Server version: 5.5.28 MySQL Community Server (GPL)Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type help; or h for help. Type c to clear the current input statement.mysql>
  22. 22. Administre via MySQL Workbench 1/3
  23. 23. Administre via MySQL Workbench 2/3
  24. 24. Administre via MySQL Workbench 3/3
  25. 25. Parar ou Iniciar o servidor MySQL(opcional)Ou via MySQL Notifier
  26. 26. Tudo certo com seu ambiente Java? 1/2Instalar e configurar JDK e pathoracle.com/technetwork/java/javase/downloads
  27. 27. Tudo certo com seu ambiente Java? 2/2JDK e path configuradosC:Program FilesMySQLMySQL Server 5.5bin>java -versionjava version "1.7.0_07"Java(TM) SE Runtime Environment (build 1.7.0_07-b11)Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)C:Program FilesMySQLMySQL Server 5.5bin>javacUsage: javac <options> <source files>where possible options include: -g Generate all debugging info -g:none Generate no debugging info -g:{lines,vars,source} Generate only some debugging inf...o
  28. 28. Hello world MySQL!
  29. 29. Adicione o driver MySQL ao CLASSPATHcaminho completo do .jarConfira:C:>set CLASSPATHCLASSPATH=.;C:Program Files (x86)Javajre6libextQTJava.zip;C:Program FilesMySQLmysql-connector-java-5.1.22mysql-connector-java-5.1.22-bin.jar
  30. 30. HelloMysql.java 1/2import java.sql.*;public class HelloMysql { public static void main(String args[]){ System.out.println("Tentando conectar ao MySQL..."); try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/mysql"; String usuario = "root"; String senha = "root"; Connection con = DriverManager.getConnection(url, usuario, senha); System.out.println("URL: " + url); System.out.println("Connection: " + con); Continua…
  31. 31. HelloMysql.java 2/2 Statement stmt = con.createStatement(); //objeto Statement ResultSet rs; //objeto ResultSet rs = stmt.executeQuery("SELECT * FROM world.country"); System.out.println("Ola mundo!"); while(rs.next()){ String nomePais = rs.getString("Name"); System.out.print(nomePais + ", "); }//end while con.close(); } catch( Exception e ) { e.printStackTrace(); }//end catch }//end main}//end class HelloMysql FIM!
  32. 32. java HelloMysqlC:tutorial>javac HelloMysql.javaC:tutorial>java HelloMysqlTentando conectar ao MySQL...URL: jdbc:mysql://localhost:3306/mysqlConnection: com.mysql.jdbc.JDBC4Connection@ed07f45Ola mundo!Aruba, Afghanistan, Angola, Anguilla, Albania, Andorra, Netherlands Antilles, United Arab Emirates, Argentina, Armenia, American Samoa, Antarctica, French Southern territories, Antigua and Barbuda, Australia, Austria, Azerbaijan, Burundi, Belgium, Benin, Burkina Faso, Bangladesh, Bulgaria, Bahrain, Bahamas, Bosnia andHerzegovina, Belarus, Belize, Bermuda, Bolivia, Brazil, Barbados, Brunei, Bhutan, Bouvet Island, Botswana, Central African Republic, Canada, Cocos (Keeling) Islands, Switzerland, Chile, China, C├┤te d┬ÆIvoire, Cameroon, Congo, The Democratic Republic of the, Congo, Cook Islands, Colombia, Comoros, Cape Verde, Costa Rica, Cuba, Christmas Island, Cayman Islands, Cyprus, Czech Republic, Germany, Djib…ietnam, Vanuatu, Wallis and Futuna, Samoa, Yemen, Yugoslavia, South Africa, Zambia, Zimbabwe,
  33. 33. Revisão: Conceitos importantes• Como conectar o Java ao MySQL• Entender o CLASSPATH 34
  34. 34. Revisão: conectando o Java ao MySQL• O driver JDBC é chamado MySQL Connector/J • Desenvolvido pela Oracle sob licença GPL• Driver Type IV (todo java, nativo)• Disponível para baixar em: • Software • dev.mysql.com/downloads/connector/j • Maven, Ivy • Many Linux and BSD distributions • Documentation • dev.mysql.com/doc/refman/5.5/en/connector-j.html 35
  35. 35. Revisão: Entendendo o CLASPATH• O classpath é o local onde o Java procura por código compilado (biblioteca)• Há locais padrão para o classpath • WEB-INF/lib, WEB-INF/classes in webapps • $JRE_HOME/lib/ext• Quando estiver desenvolvendo ou implantando evite estes locais • $JRE_HOME/lib/ext • Application-server-wide • e.g. $CATALINA_HOME/lib• Se possível deixe este trabalho para sua IDE 36
  36. 36. Crie um usuário no MySQL. 37
  37. 37. Criando usuário public User createUser(Connection c, String } catch (SQLException sqlEx) {login, String firstName, String lastName, String // handle it, its not a concern outsidecredentials) { of persistence PreparedStatement p = null; } finally { try { try { p = c.prepareStatement("INSERT if (p != null) { p.close(); };INTO user (login, first_name, last_name,passwd_hash) VALUES (?, ?, ?, ?)"); } catch (SQLException sqlEx) { p.setString(1, login); // cant do anything here, log? p.setString(2, firstName); } ResultSet rs = }p.getGeneratedKeys(); } rs.next(); long id = rs.getLong(1); PersistentUser user = newPersistentUser(); Estes tipos de user.setId(id); acesso é conhecido return user; como Raw JDBC… 38
  38. 38. Arquitetando para o sucesso com MySQL! Applications start small If they’re successful, they don’t stay that way
  39. 39. Arquitetando para o SucessoUm Anti-Pattern Presentation Presentation Presentation Presentation Presentation Presentation Presentation Presentation Presentation BusinessLogic Presentation Presentation Presentation BusinessLogic BusinessLogic Presentation Presentation BusinessLogic BusinessLogic BusinessLogic BusinessLogic BusinessLogicBusinessLogic Persistence BusinessLogic Persistence Persistence BusinessLogic Persistence BusinessLogic BusinessLogic Persistence BusinessLogic BusinessLogic Persistence Persistence Persistence Persistence BusinessLogic Persistence Persistence Persistence Persistence Persistence Persistence Persistence Persistence Persistence 40
  40. 40. Arquitetando para o Sucesso Um Anti-PatternQuero usar uma lógica daqui… Presentation Presentation Presentation Presentation Presentation Presentation Presentation Presentation Presentation …aplicar aqui… BusinessLogic Presentation Presentation Presentation BusinessLogic BusinessLogic Presentation Presentation BusinessLogic BusinessLogic BusinessLogic BusinessLogic BusinessLogicBusinessLogic Persistence …no contexto BusinessLogic Persistence Persistence BusinessLogic Persistence desta BusinessLogic BusinessLogic Persistence BusinessLogic BusinessLogic Persistence trasação. Persistence Persistence Persistence BusinessLogic Persistence Persistence Persistence Persistence Persistence Persistence Persistence Persistence Persistence 41
  41. 41. Arquitetando para o SucessoComece limpo Presentation Business Logic Persistence 42
  42. 42. Arquitetando para o Sucesso Comece limpo PresentationTransactions Business Logic Persistence 43
  43. 43. Arquitetando para o Sucesso Comece limpo PresentationTransactions Business LogicCaching Persistence 44
  44. 44. Arquitetando para o Sucesso Comece limpo Presentation } Test thisTransactions Business Logic } Test thisCaching Persistence } Test this 45
  45. 45. Arquitetando para o SucessoUse ferramentas adequadas• Using Maven to manage the depedencies/build• Using SpringFramework • Dependency Injection • Templates/Boilerplate/Integration• Uma boa IDE: NetBeans, Eclipse 46
  46. 46. Arquitetura em Camadas Exemplo Criar Usuário @Override public User createUser(String login, String firstName, String lastName, String credentials) { jdbcTemplate.update("INSERT INTO user (login, first_name, last_name, passwd_hash)VALUES (?, ?, ?, ?)", login, firstName, lastName, credentials); long id = jdbcTemplate.queryForLong("SELECT LAST_INSERT_ID()"); PersistentUser user = new PersistentUser(); user.setId(id); user.setLogin(login); user.setFirstName(firstName); user.setLastName(lastName); user.setCredentials(credentials); return user; } 47
  47. 47. Como era no Raw JDBC public User createUser(Connection c, String } catch (SQLException sqlEx) {login, String firstName, String lastName, String // handle it, its not a concern outsidecredentials) { of persistence PreparedStatement p = null; } finally { try { try { p = c.prepareStatement("INSERT if (p != null) { p.close(); };INTO user (login, first_name, last_name,passwd_hash) VALUES (?, ?, ?, ?)"); } catch (SQLException sqlEx) { p.setString(1, login); // cant do anything here, log? p.setString(2, firstName); } ResultSet rs = }p.getGeneratedKeys(); } rs.next(); long id = rs.getLong(1); PersistentUser user = newPersistentUser(); Estes tipos de user.setId(id); acesso é conhecido return user; como Raw JDBC… 48
  48. 48. Resolvendo erros comuns com MySQL! 65
  49. 49. Class not found• java.lang.ClassNotFoundException: com.mysql.jdbc.Driver • The driver is not in your CLASSPATH • Standalone applications with framework-managed CLASSPATH help with this, i.e WEB-INF/lib, or mvn or ant- managed CLASSPATH 66
  50. 50. No Suitable Driver• SQLException: No suitable driver • Check your URL, compare to the documentation at http://dev.mysql.com/doc/refman/5.1/en/connector-j.html• Your URL should look something like jdbc:mysql://host:port/database[...] 67
  51. 51. Out of Memory• java.lang.OutOfMemoryError when reading results • Your result set is too large, Connector/J buffers results by default • Most use cases don’t require large result sets • Those that do, process in chunks via SELECT ... LIMIT, or Statement.setFetchSize(Integer.MIN_VALUE)• Heap dump shows many statement, result set instances • Not closing resources on every code path • Frameworks help prevent this • Plumb try {} catch {} finally {} throughout your code (yuck!) 68
  52. 52. Communications Exceptions• "The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server." • Your server was started with --skip-networking or --bind- address=127.0.0.1 and your client is remote to the server• “The last packet successfully received from the server was 25899 milliseconds ago.The last packet sent successfully to the server was 25899 milliseconds ago, which is longer than the server configured value of wait_timeout” • Connections are sitting idle too long in your pool • Configure your pool to evict idle connections before wait_timeout would expire • Don’t let connections idle much more than the amount of time it takes to create a new one under worst-case 69
  53. 53. Devo migrar para MySQL? 70
  54. 54. MySQL Migration Tool Novo!• Wizard para migração de tabelas e dados: • MS-SQL Server 2000, 2005, 2008 e 2012. • SGBDs em geral via ODBC • Mapeamento personalizado (opcional) • Integrado ao Workbench open source e gratuitoDownload:mysql.com/downloadsDocumentação:dev.mysql.com/doc/workbench/en/wb-migration.html 71
  55. 55. 72
  56. 56. Próximos passos com MySQL 73
  57. 57. Referências• Use MySQL with Java http://dev.mysql.com/usingmysql/java/• Read Connector/J User Manual http://dev.mysql.com/doc/refman/5.5/en/connector-j.html• Download MySQL 5.5 http://www.mysql.com/downloads/mysql/• Download Free MySQL White Papers http://dev.mysql.com/why-mysql/white-papers/• View MySQL Training Courses http://mysql.com/training 74
  58. 58. MySQL Treinamento e Certificação Treinamentos MySQL DBA MySQLDeveloper CertificaçõesMySQL Boot Camp MySQL Boot Camp Accelerated AcceleratedMySQL Performance MySQL Performance Tuning Boot Camp Tuning Boot Camp Accelerated AcceleratedMySQL for Begginers MySQL for BegginersMySQL for Database MySQL and PHP Administrators Developing Dynamic Web ApplicationgMySQL Performance Tuning MySQL for Developers MySQL High MySQL Advanced Availability Stored Procedures MySQL Cluster Opcional Necessário education.oracle.com 75
  59. 59. Obrigado!@MySQLBR facebook.com/MySQLBR meetup.com/MySQL-BR 76
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×