JavaDB Um Banco de Dados 100% Java Profa. Me. Karen Selbach Borges Confraria do Java V Seminário RSJUG - 2006 Sumário • • • • • Apresentação do JavaDB Instalação Como usar via Netbeans 5.0 Passo a passo de uma aplicação desktop Como fazer a distribuição da aplicação Confraria do Java V Seminário RSJUG - 2006 Introdução • Cloudscape – IBM • Doação dos fontes para Apache Foundation • Projeto Derby Apache Confraria do Java V Seminário RSJUG - 2006 Introdução • Características: – – – – Tamanho: 2 MB 100% Java Fácil de instalar e usar Grátis e com suporte ! Confraria do Java V Seminário RSJUG - 2006 Introdução • Características: – – – – – – – – API JDBC ANSI SQL ACID (Atomic, Consistent, Isolation, Durable) Controle de transações Stored procedures Triggers Concorrência Backup de dados. Confraria do Java V Seminário RSJUG - 2006 Introdução • Onde usar: – Aplicações desktop – Aplicações web – Aplicações para dispositivos móveis, como por exemplo PDAs. Confraria do Java V Seminário RSJUG - 2006 Introdução • Onde conseguir : http://developers.sun.com/prodtech/javadb/ downloads/ Confraria do Java V Seminário RSJUG - 2006 Como Usar • Instalação : – Descompactar o arquivo javadb-10_1_1_0-fcs-bin-b01-windows-21_mar_2006.zip • Não possui GUI ! • Então usar via Netbeans5.0 Confraria do Java V Seminário RSJUG - 2006 Acesso via Netbeans - Runtime • Selecione Tools > Options > Advanced Options • IDE Configuration > Server and External Tools Settings > Derby Database Confraria do Java V Seminário RSJUG - 2006 Acesso via Netbeans - Runtime • Selecione Tools > Derby Database > Start Derby Server Confraria do Java V Seminário RSJUG - 2006 Acesso via Netbeans - Runtime • Selecione Tools > Derby Database > Create Derby Database... Confraria do Java V Seminário RSJUG - 2006 Acesso via Netbeans - Runtime • Mude para aba de Runtime e veja sua conexão com o banco de dados Confraria do Java V Seminário RSJUG - 2006 Acesso via Netbeans - Runtime • Através desta conexão é possível criar tabelas e executar comandos SQL Confraria do Java V Seminário RSJUG - 2006 Passo a Passo de Uma Aplicação 1) Acrescentar o JavaDB ao projeto Confraria dopasso1 Java passo2 V Seminário RSJUG - 2006 Passo a Passo de Uma Aplicação 2) Criar um arquivo db.properties contendo as informações necessárias para a conexão com o banco conexao.driver=org.apache.derby.jdbc.EmbeddedDriver conexao.url=jdbc:derby:Agenda conexao.database=Agenda conexao.dir=AgendaDB URL : jdbc:derby:<dbName>[propertyList] As propriedades mais comuns são: – Create=true, user=userName, password=userPassword, shutdown=true Confraria do Java V Seminário RSJUG - 2006 Passo a Passo de Uma Aplicação 3) Criar um arquivo sql.properties contendo os códigos SQL necessários para as transações do banco CreateTable.Contato=CREATE TABLE APP.CONTATO (idContato INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), nome VARCHAR(40) NOT NULL, endereco VARCHAR(50), telefone VARCHAR(20) NOT NULL) Insert.Contato=INSERT INTO APP.CONTATO (Nome, Endereco, Telefone) VALUES (?,?,?) Select.Contato=SELECT * FROM APP.CONTATO Confraria do Java V Seminário RSJUG - 2006 Passo a Passo de Uma Aplicação 4) Criar a classe de conexão public static Connection getInstance(String user, String password){ if( conexao == null ) { new DBConnection(user, password); } return conexao; } private DBConnection( String user, String password ) { loadProperties(); setDBSystemDir(); if ( !dbExists() ){ createDatabase( user, password ); } else { conexao = openConnection( user, password ); } } Confraria do Java V Seminário RSJUG - 2006 Passo a Passo de Uma Aplicação Classe de conexão public void loadProperties(){ int count=0; try { InputStream is = getClass().getResourceAsStream( "db.properties" ); Properties props = new Properties(); props.load( is ); driver = props.getProperty("conexao.driver"); dbName = props.getProperty("conexao.database"); url = props.getProperty("conexao.url"); dir = props.getProperty("conexao.dir"); is.close(); } catch( IOException ioex ) { System.err.println(" Erro ao carregar arquivo de propriedades "); } } Confraria do Java V Seminário RSJUG - 2006 Passo a Passo de Uma Aplicação Classe de conexão private void setDBSystemDir() { // Obtém o diretório da aplicação String userDir = System.getProperty("user.dir", "."); // Define o caminho do diretório do banco da aplicação String systemDir = userDir + "/" + dir; // cria o diretório para o banco File fileSystemDir = new File(systemDir); if (!fileSystemDir.exists()){ fileSystemDir.mkdir(); } // Seta a propriedade que indica o banco da aplicação System.setProperty("derby.system.home", systemDir); } Confraria do Java V Seminário RSJUG - 2006 Passo a Passo de Uma Aplicação Classe de conexão private void createDatabase(String user, String password){ String tabelaContato; String tabelaEndereco; try{ url=url+";create=true"; conexao = this.openConnection(user, password); Statement stmt = conexao.createStatement(); tabelaContato = new SQLManager().loadSQL("CreateTable.Contato"); stmt.execute(tabelaContato); } catch (SQLException sqle){ System.err.println(sqle); } } Confraria do Java V Seminário RSJUG - 2006 Passo a Passo de Uma Aplicação Classe de conexão private Connection openConnection(String user, String password) { try { Class.forName(driver); //carrega o driver. conexao = DriverManager.getConnection(url, user, password); return conexao; } catch (SQLException sqlex) { System.err.println( "Unable to connect" ); return null; } catch(ClassNotFoundException cnfex) { System.err.println(" Failed to load JDBC driver." ); return null; } } Confraria do Java V Seminário RSJUG - 2006 Passo a Passo de Uma Aplicação 5) Elaborar os DAOs e VOs 6) Editar o arquivo de manifesto 7) Gerar o arquivo JAR Build > Build Main Project (F11) Confraria do Java V Seminário RSJUG - 2006 Referências • Projeto Apache Derby http://db.apache.org/derby/ • Brian Leonard. Netbeans Derby Tutorial. http://www.netbeans.org/kb/50/derby-demo.html • John O'Conner. Using Java DB in Desktop Applications. http://java.sun.com/developer/technicalArticles/J2 SE/Desktop/javadb/ Confraria do Java V Seminário RSJUG - 2006 Outras coisas interessantes • Demo (Mozilla Firefox only) http://developers.sun.com/prodtech/javadb/overvie w/product_tour/readme.jsp#Download • Derby e Hibernate http://wiki.apache.org/db-derby/HibernateHelp Confraria do Java V Seminário RSJUG - 2006 Dúvidas ? [email protected] www.confrariadojava.org/karen Confraria do Java V Seminário RSJUG - 2006