FERRAMENTA GERADORA DE CÓDIGO-FONTE DE APLICAÇÕES COMERCIAIS EM JAVA

Tamanho: px
Começar a partir da página:

Download "FERRAMENTA GERADORA DE CÓDIGO-FONTE DE APLICAÇÕES COMERCIAIS EM JAVA"

Transcrição

1 FACULDADE DE INFORMÁTICA DE PRESIDENTE PRUDENTE FERRAMENTA GERADORA DE CÓDIGO-FONTE DE APLICAÇÕES COMERCIAIS EM JAVA SIDNEY HEND DA SILVA HORAGUTI Presidente Prudente SP 2005

2 FACULDADE DE INFORMÁTICA DE PRESIDENTE PRUDENTE FERRAMENTA GERADORA DE CÓDIGO-FONTE DE APLICAÇÕES COMERCIAIS EM JAVA SIDNEY HEND DA SILVA HORAGUTI Trabalho monográfico apresentado no curso de graduação, Bacharelado em Ciência da Computação, como requisito parcial para sua conclusão. Área de concentração: Linguagens de Programação. Orientador: MSc. Francisco Assis da Silva Co-Orientador: MSc. Leandro Luiz de Almeida Presidente Prudente SP 2005

3 004 HORAGUTI, Sidney Hend da Silva. Ferramenta Geradora de Código-Fonte de Aplicações Comerciais em Java/ Sidney Hend da Silva Horaguti. Presidente Prudente: UNOESTE, p. : il Monografia (Graduação) Universidade do Oeste Paulista UNOESTE: Presidente Prudente SP, Bibliografia 1. Ferramenta Geradora de Código-Fonte. 2. Java. I. Autor. II. Título.

4 DEDICATÓRIA Dedico este trabalho primeiramente a Deus. A minha amada mãe Ghislaine e ao meu super pai Cláudio, que nunca mediram esforços para que eu pudesse cursar a faculdade e sempre estiveram presentes nos momentos mais difíceis desta jornada. Aos meus três grandes irmãos, Dayvid, Hudson e Juan, pelo carinho, confiança e esperança depositados em mim.

5 AGRADECIMENTOS A toda minha família, em especial a minha tia Teresa e meu tio Santo que, em todos os momentos de realização desta pesquisa, estiveram presentes. As minhas primas Miyuki e Mayumi que, apesar das diferenças sempre me apoiaram e acreditaram em meu potencial. Agradecimentos também aos professores orientadores, MSc. Francisco Assis da Silva e MSc. Leandro Luiz de Almeida que, na rigidez de seus ensinamentos, fez aprimorar meus conhecimentos como pessoa e profissional. A professora, MSc. Aglaê Pereira Zaupa, pelo carinho e apoio nos momentos difíceis. Aos meus amigos e irmãos de curso, Eli, Julierme, Diogo, em especial a meu grande e fiel amigo Fagner Daniel de Melo, que me ajudou nos momentos mais difíceis.

6 EPÍGRAFE [...] Mesmo uma longa jornada inicia-se com um simples passo [...] Lao Tse

7 HORAGUTI, Sidney Hend da Silva. Ferramenta geradora de aplicações comerciais em Java. Presidente Prudente: UNOESTE, Monografia de Graduação. Orientador: MSc. Francisco Assis da Silva Co-Orientador: MSc. Leandro Luiz de Almeida RESUMO Este trabalho tem por objetivo implementar uma ferramenta capaz de gerar código-fonte de aplicações comerciais na linguagem de programação Java, a partir das informações contidas no catálogo do banco de dados Interbase da aplicação. O desenvolvimento desta ferramenta foi motivado pela necessidade de se ter aplicações comerciais com um tempo de desenvolvimento extremamente baixo, que possa ser de fácil utilização pelo usuário e que possibilite ser executada em um sistema operacional gratuito, como é o caso do Linux. Pensa-se que a construção da ferramenta, a qual se objetiva este projeto, proporcionará às empresas de pequeno e médio porte a possibilidade de se beneficiar da aplicação comercial gerada, com tempo de desenvolvimento reduzido e portabilidade para diversos sistemas operacionais, livres ou proprietários. Neste trabalho é apresentada a API JDBC (Java Database Connectivity) para acesso e consultas ao banco de dados Interbase da aplicação e seu catálogo. JDBC é uma API que permite que a aplicação Java se conecte a um banco de dados relacional, como é o caso do Interbase. É demonstrada sua finalidade, suas características básicas e exemplos de sua utilização.

8 HORAGUTI, Sidney Hend da Silva. Generating tool of commercial source-code applications in Java. Presidente Prudente: UNOESTE, Graduation Monograph. Adviser: MSc. Francisco Assis da Silva Co-Adviser: MSc. Leandro Luiz de Almeida ABSTRACT This work objective is to implement a tool able to create commercial applications source-code in Java programming language through the contained information in the Interbase database catalog of the application. The tool development was motivated by the need of construct commercial applications with a low time development to facilitate the use and that can be possible executed in a free operating system like Linux. We think that a tool construction in this work provide to the small and medium companies the possibility to benefit of the generated commercial application with reduced time of development and portability for several licensed and free operating systems. In this work is presented the API JDBC (Java Database Connectivity) to access and query Interbase database of the application and database catalog. JDBC is API that allows Java application to connect in a relational database like Interbase. The objective basic characteristics and use examples are demonstrated.

9 LISTA DE FIGURAS FIGURA 1 Tabelas e campos do catálogo Interbase FIGURA 2 Tabelas do banco de vendas...27 FIGURA 3 SQL de criação do banco de vendas FIGURA 4 Programa exemplo do catálogo do banco de vendas...29 FIGURA 5 String de conexão com o banco de vendas FIGURA 6 Tabelas do banco de vendas...30 FIGURA 7 SQL que retorna as tabelas do banco de vendas...30 FIGURA 8 Campos das tabelas do banco de vendas...31 FIGURA 9 SQL que retorna os campos do banco de vendas...31 FIGURA 10 Chaves primárias do banco de vendas...32 FIGURA 11 SQL que retorna as chaves primárias do catálogo FIGURA 12 Chaves estrangeiras do catálogo...33 FIGURA 13 SQL que retorna as chaves estrangeiras...34 FIGURA 14 Classe de conexão com um banco de dados FIGURA 15 Consulta de produtos utilizando a classe Conexao...38 FIGURA 16 Código-fonte da consulta utilizando a classe Conexao...39 FIGURA 17 Tela inicial da ferramenta...43 FIGURA 18 Parâmetros iniciais da aplicação...44 FIGURA 19 Escolha dos templates da aplicação...45 FIGURA 20 Exemplo de uma classe de mapeamento FIGURA 21 Exemplo de utilização da classe de mapeamento FIGURA 22 Métodos da camada de persistência FIGURA 23 Montando SQL de inserção FIGURA 24 Montando SQL de alteração FIGURA 25 Utilização do componente SJDBComboBox...52 FIGURA 26 Utilização do componente SJDBTable FIGURA 27 Template de cadastro FIGURA 28 Instrução SQL padrão do SJDBComboBox FIGURA 29 Cadastro da aplicação comercial gerada...54 FIGURA 30 Template de consulta/relatório...55 FIGURA 31 Consulta/Relatório da aplicação gerada....56

10 FIGURA 32 Visualizador de relatórios em PDF...57 FIGURA 33 Template de movimentação...57 FIGURA 34 Movimentação da aplicação gerada FIGURA 35 Geração de um relatório com JasperResports (PAIXÃO, 2004)...61 FIGURA 36 Tags de campos FIGURA 37 Declaração de parâmetros...63 FIGURA 38 Definição de uma SQL utilizando parâmetros...63 FIGURA 39 Atribuição de valores aos parâmetros com HashMap...63 FIGURA 40 Declaração de variáveis...64 FIGURA 41 Declaração de variáveis com nível de inicialização FIGURA 42 Declaração de expressões FIGURA 43 Cadastro de um banco de dados no ireport FIGURA 44 Configuração dos visualizadores de relatório FIGURA 45 Definição da SQL do relatório...69 FIGURA 46 Definição dos campos do relatório...70 FIGURA 47 Definição dos campos de agrupamento do relatório...70 FIGURA 48 Definição do estilo do relatório...71 FIGURA 49 Término da definição do relatório...71 FIGURA 50 Layout do relatório FIGURA 51 Definição dos nomes dos campos do relatório FIGURA 52 Executando o relatório FIGURA 53 Salvando o layout do relatório...73 FIGURA 54 Visualização do relatório com o JasperViewer...74

11 LISTA DE TABELAS TABELA 1 Métodos Java para recuperação de tipos SQL...42 TABELA 2 Tipos Interbase e Java TABELA 3 Níveis de inicialização das variáveis...64 TABELA 4 Variáveis internas TABELA 5 Tipos de seções...66 TABELA 6 Ferramentas para design de relatórios....66

12 SUMÁRIO 1 INTRODUÇÃO OBJETIVOS, JUSTIFICATIVAS E MOTIVAÇÕES DO PROJETO TRABALHOS CORRELATOS ORIENTAÇÃO A OBJETOS ESTRUTURA DESSA MONOGRAFIA CATÁLOGO DO BANCO DE DADOS CATÁLOGO DO BANCO DE DADOS INTERBASE JDBC JAVA DATABASE CONNECTIVITY CONEXÃO COM O BANCO DE DADOS INTERBASE EM JAVA Classe de Conexão em Java MÉTODOS JAVA PARA RECUPERAÇÃO DE TIPOS SQL A FERRAMENTA PARÂMETROS INICIAIS DA APLICAÇÃO COMERCIAL MAPEAMENTO INTERBASE X JAVA CAMADA DE PERSISTÊNCIA COMPONENTES GRÁFICOS IMPLEMENTADOS TEMPLATE DE CADASTRO TEMPLATE DE CONSULTA/RELATÓRIO Visualizador de Relatórios em PDF TEMPLATE DE MOVIMENTAÇÃO SOFTWARES PESQUISADOS FERRAMENTAS PARA RELATÓRIOS JasperReports Dados Estrutura XML do arquivo Jasper Campos Parâmetros Variáveis Expressões...65

13 Layout ireport CONCLUSÕES...75 REFERÊNCIAS BIBLIOGRÁFICAS...76

14 12 1 INTRODUÇÃO Nos dias atuais as empresam vislumbram redução de custo e complexidades dos processos, disponibilidade dos sistemas 24 horas com segurança dos dados, atendendo as oportunidades de negócios com tecnologia de baixo custo. Java (JAVA, 2004) vem para suprir essas necessidades como uma tecnologia avançada com baixo custo e alto poder de processamento, atendendo diversos nichos de mercado e negócios, possibilitando a implementação dos mais diversos tipos de aplicações, tanto Clientes como Servidores, rodando na maioria das plataformas existentes no mercado hoje, proprietárias ou livres. O termo sistema comercial refere-se a uma organização de indivíduos ou entidades, presumivelmente trabalhando juntos para conseguir alguns objetivos comuns. As organizações possuem muitas formas e tamanhos, grandes e pequenas, com ou sem fins lucrativos, governamentais ou não (AHMED, 2002). A Sun (SUN, 2005) organizou o Java 2 Plataform, mais conhecido como Java 2 e será abordado nesta monografia apenas como Java, em três áreas específicas ou plataformas: Java 2 Micro Edition (J2ME) A plataforma para desenvolvimento de software para dispositivos incorporados como celulares, palm top, etc; Java 2 Standard Edition (J2SE) A mais familiar das plataformas Java 2, também conhecida como Java Development Kit (JDK) e incluem bibliotecas para desenvolvimentos de applets (programas Java para internet), interfaces com o usuário, cálculos aritméticos etc; Java 2 Enterprise Edition (J2EE) A plataforma para desenvolver aplicações comerciais dimensionáveis. É designada para ser usada em conjunto com o J2SE. O J2EE define uma arquitetura para desenvolvimento de aplicações comerciais complexas e distribuídas, foi originalmente anunciado pela Sun Microsystems no inicio de 1999 e foi lançado oficialmente no final de O J2EE, sendo relativamente novo, ainda está desenvolvendo alterações significativas de

15 13 versão para versão, especialmente na área do Enterprise Java Beans (EJB), que são as bibliotecas específicas para desenvolvimento de aplicações distribuídas. A Sun (Sun, 2005), caracterizou o J2EE nos seguintes aspectos: Regras de construção para desenvolver aplicações comerciais usando o J2EE; Uma implementação de referência para fornecer uma visão operacional do J2EE; Um conjunto de teste de compatibilidade para ser utilizado por terceiros para verificar a compatibilidade de seus produtos com o J2EE; Várias Application Programming Interface ou API (Interface de Programação da Aplicação) para permitir o acesso genérico para recursos comerciais e infra-estrutura; Tecnologias para simplificar o desenvolvimento Java comercial. A plataforma baseia-se no mantra Java: Escreva uma vez, execute em qualquer lugar, por meio de um grupo de tecnologias e um conjunto de API s. Elas são suportadas e vinculadas, por sua vez, por três elementos-chave a saber: a implementação de referência, as regras da construção e o conjunto de compatibilidade. Talvez uma das maiores vantagens de Java, seja seu suporte para componentes. O software baseado em componentes tem numerosas vantagens sobre o desenvolvimento de software tradicional (DEITEL, 2003): Produtividade mais alta: Os desenvolvedores podem conseguir mais produtividade, reunindo uma aplicação a partir de componentes predefinidos e testados previamente em vez de implementar uma solução personalizada a partir do zero; Desenvolvimento rápido: Os componentes existentes podem ser reunidos rapidamente para criar novas aplicações; Qualidade mais alta: Em vez de testar as aplicações inteiras, os desenvolvedores da aplicação baseada em componentes podem se

16 14 concentrar em testar a integração e a funcionalidade geral da aplicação conseguida pelos componentes predefinidos. A principal biblioteca J2EE utilizada neste projeto é a JDBC (REESE, 2001) (JDBC, 2004) (JAVA, 2004), responsável pela conexão com SGBD (Sistema Gerenciador de Banco de Dados), as outras bibliotecas utilizadas estão localizadas na plataforma J2SE. 1.1 Objetivos, Justificativas e Motivações do Projeto A era da informação está trazendo cada vez mais às empresas a necessidade da informatização de processos de negócios e a possibilidade de armazenar informações importantes e relevantes em Banco de Dados. A maior parte das empresas nos dias de hoje detém ou vislumbram ter um sistema computacional para informatizar alguma área da empresa no intuito de melhorar e tornar mais confiável e de mais fácil obtenção as informações geradas. As aplicações comerciais são cada vez mais utilizadas para substituir a enorme quantidade de papéis que seriam gerados com o processo manual. A informática definitivamente trouxe a possibilidade de se ter melhores resultados no planejamento de ações e investimentos nas empresas, visando o seu crescimento e uma maior vantagem competitiva. Pensando em se ter aplicações comerciais com baixo custo de produção e de se ter aplicações que possam ser executadas em diferentes plataformas, pensou-se na construção de uma ferramenta capaz de gerar o códigofonte de aplicações comerciais. Estas aplicações comerciais seriam escritas na linguagem de programação Java e utilizariam o Banco de Dados Interbase (BORLAND, 2004). Objetivando realizar uma investigação abrangente sobre a utilização de Java no desenvolvimento de aplicações comerciais. O aprendizado da utilização do Banco de Dados Interbase na linguagem Java também é considerado um fator relevante, devido ao fato que todas as informações necessárias para a geração do código-fonte da aplicação comercial estarem contidas em seu catálogo. Almeja-se a construção de uma ferramenta capaz de gerar código-fonte de aplicações comerciais na linguagem de programação Java. Estas aplicações pelo

17 15 fato de serem desenvolvidas em Java, poderão ser executadas em qualquer plataforma que possua uma máquina virtual Java (JVM Java Virtual Machine), ou seja, uma plataforma que tenha recursos que suporte esta linguagem. A necessidade de se ter a produção de uma aplicação comercial com um tempo de produção extremamente baixo, além da possibilidade de se poder executá-la em um sistema operacional gratuito e de fácil obtenção na internet como é o caso do Linux (LINUX, 2003) motivaram a idealização deste projeto. A ferramenta, instrumento pela qual objetiva incorporar as justificativas acima descritas possui um ambiente de fácil utilização pelo programador da aplicação que, numa fase anterior a da geração do código-fonte da aplicação comercial deverá modelar e construir o Banco de Dados, pois seu catálogo será utilizado pela ferramenta para obter informações a respeito das tabelas, campos e tipos dos campos para posteriormente gerar o código-fonte da aplicação comercial. 1.2 Trabalhos Correlatos Nesta seção, resumem-se os resultados das investigações realizadas para obter conhecimento de trabalhos relacionados ao apresentado nesta monografia, envolvendo inclusive abordagens diferentes. Entre as ferramentas exploradas que possuem uma abordagem semelhante à deste projeto, foram encontradas duas ferramentas, o X-Maker desenvolvido pela empresa X-Maker (XMAKER, 2004) e o Sculptor desenvolvido pela empresa Squadra (SCULPTOR, 2004), sendo que ambos são geradores de aplicativos, porém na linguagem de programação Pascal e no ambiente de desenvolvimento Delphi (BORLAND, 2004). Essas duas ferramentas podem ser encontradas nos sites dos seus respectivos fabricantes, (SCULPTOR, 2004) e (XMAKER, 2004), porém, por serem ferramentas comerciais será preciso pagar por sua utilização. Estas ferramentas são voltadas para desenvolvedores de software, suas principais funções são voltadas à manipulação de banco de dados para armazenamento de informações de qualquer natureza, agregando todos os recursos

18 16 possíveis e atuais do ambiente visual e com acesso nativo às bases de dados, ambos são projetos de empresas de desenvolvimento brasileiras. Os arquivos-fontes são gerados na linguagem Delphi 5, 6 ou 7 e pode acessar as bases de dado Interbase, FireBird, SyBase, MS-SQL Server, MySql, PostGreSql e ADO (Access, Paradox, dbase, Oracle, etc.). Uma das principais diferenças destas duas ferramentas em relação à ferramenta objetivada neste projeto se trata do acesso às tabelas já criadas anteriormente no banco de dados, nestas ferramentas é preciso criar o banco de dados dentro da ferramenta, no caso do usuário já possuir uma base de dados definida anteriormente, será preciso redefini-la para poder utilizar as funcionalidades destas duas ferramentas. 1.3 Orientação a Objetos O modelo de objetos apresenta-se como um modelo promissor para o desenvolvimento de software mais confiável devido às características inerentes ao próprio modelo de objetos, tais como abstração de dados, encapsulamento, herança e reutilização de objetos (componentes). O uso de técnicas orientadas a objetos facilita o controle da complexidade do sistema porque promove uma melhor estruturação de seus componentes, e também permite que componentes já validados sejam reutilizados (BUZATO, 98). A tecnologia orientada a objetos conduz para o reuso, e o reuso de componentes de programas conduz para um desenvolvimento de software mais rápido e programas de maior qualidade. Softwares orientados a objetos são mais fáceis de serem mantidos porque suas estruturas são naturalmente independentes (RUMBAUGH, 94) de adaptar e de ampliar, necessidades estas muito desejadas pelos desenvolvedores de softwares corporativos cujas dimensões e complexidade demandam grande esforço de projeto. A grande diferença entre uma abordagem convencional e uma orientada a objeto está na forma de visualização dos dados e processos que compõem o software. Na abordagem convencional, o software é visto como uma coleção de processos compostos por rotinas e sub-rotinas executadas de acordo com o fluxo de dados dentro do sistema, enquanto que na abordagem orientada a

19 17 objeto, essas rotinas e dados são encapsulados em uma única entidade chamada de objeto. Um objeto pode ser visto como uma entidade que possui um estado, representado por um conjunto de atributos e um conjunto de operações que modificam este estado. Cada operação associada ao objeto fornece serviços a outros objetos que são solicitados quando algum processo computacional é requisitado. Os objetos são criados de acordo com as definições de uma classe de objeto que serve de modelo para a criação dos mesmos. Isso inclui as declarações dos atributos e operações que devem ser associados ao objeto dessa classe. Cada objeto criado durante a execução de um sistema computacional recebe uma identificação única que o distingue dos demais. Um software orientado a objeto é formado por um conjunto finito de objetos que se comunicam entre si através de mensagens. Cada mensagem é um sinal enviado de um objeto a outro solicitando um serviço. Esse serviço executa uma operação que utiliza os dados a seu alcance dentro do objeto e retorna uma mensagem contendo o resultado da operação ao objeto solicitante. As vantagens decorrentes da utilização de objetos na construção de aplicações são muitas, mas podem ser citadas as seguintes (AMARAL, 2001): simplicidade: os objetos escondem a complexidade do código. Pode-se criar uma complexa aplicação gráfica usando botões, janelas, barras de rolagem, etc., sem conhecer a complexidade do código utilizado para criá-los; reutilização de código: um objeto, depois de criado, pode ser reutilizado por outras aplicações, ter suas funções estendidas e ser usado, em combinação com outros, como bloco básico para a construção de sistemas mais complexos; inclusão dinâmica: objetos podem ser inseridos dinamicamente no programa, durante a execução. Isso permite que vários programas compartilhem os mesmos objetos e classes, reduzindo o seu tamanho final.

20 18 Segundo Buzato e Rubira (BUZATO, 98), diversos autores divergem quanto às características que fazem uma linguagem ser orientada a objetos, mas a maioria concorda que o paradigma se baseia em quatro princípios básicos: abstração, encapsulamento, herança e polimorfismo. A abstração consiste na concentração nos aspectos essenciais (próprios) de uma entidade e em ignorar suas propriedades acidentais. No desenvolvimento de sistemas, isso significa concentrar-se no que um objeto é e faz, antes de decidir como ele deve ser implementado (SILVA, 2002). Muitas linguagens modernas permitem abstrações de dados, mas a capacidade de usar herança e polimorfismo proporciona maior poder. Na prática, as abstrações são fortemente acopladas com algum modelo de execução, que descreve o comportamento destas em tempo de execução (GARBINATO, 98). A área de orientação a objetos é extensa e crescente. O modelo de objetos representa em software objetos que podem ser encontrados no mundo real. Esses objetos podem ser de vários tipos, representando entidades físicas (por exemplo: aviões, robôs, etc.) ou abstratas (por exemplo: listas, pilhas, filas, etc.) (BUZATO, 98). O sucesso da orientação a objetos se deve, provavelmente, à habilidade em modelar o domínio da aplicação ao invés da arquitetura da máquina em questão (enfoque imperativo) ou mapear conceitos matemáticos (enfoque funcional) (SILVA, 2002). A característica mais importante (e diferente) da abordagem orientada a objetos para desenvolvimento de software é a unificação, através do conceito de objetos, de dois elementos que, tradicionalmente têm sido considerados separadamente em paradigmas de programação tradicionais: dados e funções. A unificação destes dois elementos de programação resulta no chamado encapsulamento (BUZATO, 98). Um objeto é uma entidade que encapsula informação de estado ou dados e possui um conjunto de operações associadas que manipulam estes dados. Um objeto pode ser usado para modelar entidades do mundo real ou de um mundo imaginário (MEYER, 88). Uma operação é definida como sendo alguma ação que um objeto realiza sobre seus próprios dados que pode resultar em uma mudança de estado.

21 19 Em geral, o estado de um objeto é completamente escondido e protegido de outros objetos e a única maneira de examiná-lo é através da invocação de uma operação (envio de uma mensagem) para este fim. Objetos representam um comportamento bem definido e uma identidade que é única. Comportamento define o modo como um objeto age e reage em termos das suas mudanças de estado e envio de mensagens e é completamente definido pelas suas operações. Identidade é a propriedade de um objeto que o distingue de outros objetos cada objeto possui um tipo, um identificador único e seus próprios dados (SILVA, 2002). Uma classe é a descrição de um molde que especifica as propriedades e o comportamento para um conjunto de objetos similares. Toda classe possui um nome e um corpo que define o conjunto de atributos e operações que suas instâncias possuem. Todo objeto é instância de apenas uma classe (SILVA, 2002). Os atributos são propriedades nomeadas de um objeto e armazenam o estado abstrato de cada objeto. Operações ou métodos caracterizam o comportamento de um objeto e é o único meio para fazer acesso, manipular e modificar os valores dos atributos de um objeto (BUZATO, 98). O mundo externo interage com um objeto invocando-lhe métodos ou passando-lhe mensagens (MEYER, 88). Encapsulamento, também chamado de ocultamento de informações, consiste na separação dos aspectos externos de um objeto dos detalhes internos da implementação. O encapsulamento impede que um programa se torne tão interdependente que uma pequena modificação possa causar grandes efeitos de propagação. A implementação de um objeto pode ser modificada sem que isso afete as aplicações que o utilizam. Pode-se modificar a implementação de um objeto para melhorar o desempenho, eliminar um erro ou consolidar um código (SILVA, 2002). Encapsulamento é o processo de combinar tipos de dados, dados e funções relacionadas em um único bloco de organização e só permitir o acesso a eles através de métodos determinados; é definido como sendo uma técnica para minimizar as interdependências entre módulos programados independentemente através de interfaces externas restritas (BUZATO, 98). A herança é um mecanismo para derivar novas classes a partir de classes existentes através de um processo de refinamento. Uma classe derivada herda a representação de dados e operações de sua classe base, mas pode seletivamente adicionar novas operações, estender a representação de dados ou

22 20 redefinir a implementação de operações já existentes. Uma classe base proporciona a funcionalidade que é comum a todas as suas classes derivadas, enquanto que uma classe derivada proporciona a funcionalidade adicional que especializa o seu comportamento (BUZATO, 98). Herança é o compartilhamento de atributos e operações entre classes com base em um relacionamento hierárquico (KHOSHAFIAN, 90). Uma classe pode ser definida de forma abrangente e depois refinada em sucessivas subclasses mais específicas. Cada subclasse incorpora, ou herda, todas as propriedades de sua(s) superclasse(s) e acrescenta suas próprias e exclusivas características. Nesse contexto, cada classe é declarada como uma subclasse de uma ou mais superclasses. Quando existe mais de uma superclasse, a relação de herança é denominada herança múltipla. Podem existir problemas de conflito entre informações herdadas por uma subclasse proveniente de diferentes superclasses, como, por exemplo, serem herdadas variáveis com mesmo nome, mas de tipos diferentes (SILVA, 2002). Polimorfismo significa que a mesma operação pode atuar de modos diversos em classes diferentes. No contexto de orientação a objetos, polimorfismo significa que diferentes tipos de objetos podem responder a uma mesma mensagem de forma diferente (BUZATO, 98). Por exemplo, pode-se definir um método denominado imprime() em diversas classes diferentes, mas cada versão deste método é adaptada para cada tipo de objeto diferente que será impresso. Um objeto supostamente da classe Cheque irá responder a mensagem de uma maneira, um objeto da classe Relatorio irá responder de outra forma e um objeto da classe Fotografia responderá de uma outra forma ainda. O método imprime() é polimórfico, pois é implementado diferentemente por diferentes classes de objetos (SILVA, 2002). No mundo real uma operação é simplesmente uma abstração de um comportamento análogo entre diferentes tipos de objetos. Cada objeto sabe como executar suas próprias operações. Entretanto, uma linguagem de programação baseada em objetos seleciona automaticamente o método correto para implementar uma operação com base no nome da operação e na classe do objeto que esteja sendo operado (SILVA, 2002). O usuário de uma operação não necessita saber quantos métodos existem para implementar uma determinada operação polimórfica.

23 21 Novas classes podem ser adicionadas sem que se modifique o código existente (RUMBAUGH, 94). Uma mensagem enviada a um objeto provoca um determinado comportamento no objeto receptor e, se a mesma mensagem for enviada a diferentes objetos, o comportamento poderá ser distinto. A esta interpretação particular de cada objeto frente à mesma mensagem, dá-se o nome de polimorfismo (LISBOA, 95). A programação orientada a objetos é freqüentemente tida como um novo paradigma de programação. Outros paradigmas são a programação procedimental (linguagens como C e Pascal), a programação lógica (Prolog) e a programação funcional (FP ou Haskell) (SILVA, 2002). A orientação a objetos permite que softwares sejam construídos a partir de componentes de propósitos gerais reutilizáveis, o que demonstra um modelo promissor mais confiável e modular. A utilização de técnicas orientadas a objetos facilita o controle da complexidade do sistema, porque promove uma melhor estruturação de seus componentes, e também permite que componentes já validados sejam reutilizados (BUZATO, 98). Foram observadas na linguagem Java as vantagens decorrentes da utilização do paradigma da orientação a objetos. Java foi criada para atender os requisitos do mundo real, possuindo importantes aspectos citados a seguir (NAUGTON, 96): simples e poderosa: os métodos para realizar uma determinada tarefa são claros e em número reduzido. Java propicia o poder de expressar cada idéia de forma clara e limpa, orientada a objetos, sem ter de expor todos os perigosos funcionamentos internos do sistema; segura: os programas executados na máquina virtual Java são submetidos a verificadores de código e gerenciadores de segurança, cujas normas podem ser específicas para cada aplicativo; robusta: a existência de um sistema de tratamento de exceções bem estruturado, aliado aos verificadores dinâmicos de código e às bibliotecas de componentes robustos que não permitem ao usuário

24 22 ignorar a ocorrência de erros, tornam Java uma linguagem atraente para o desenvolvimento de aplicativos confiáveis; interativa: foi criada para atender a requisitos do mundo real, entre eles a criação de programas interativos e em rede; neutra em relação à arquitetura: a linguagem Java foi desenvolvida com preocupações em garantir a longevidade e portabilidade de código entre plataformas diferentes; interpretada e de alto desempenho: a independência de plataforma é alcançada em Java através de uma representação intermediária chamada bytecode, que foi cuidadosamente projetada para que seja fácil traduzi-la diretamente para o código da máquina nativa e tenha um alto desempenho. O desempenho de Java é um fator até o momento preocupante para os programadores e tem pesado negativamente sobre a linguagem, mas pesquisas estão sendo feitas no sentido de melhorar esta situação. Estas pesquisas mostram que o desempenho de Java poderá exceder o desempenho de linguagens como C++, pois a compilação dinâmica dá ao compilador Java acesso em tempo de execução a informações que não estão disponíveis a um compilador C++ (REINHOLTZ, 2000). As considerações descritas nesta seção motivaram a utilização da orientação a objetos e, em particular, o uso da linguagem Java para a implementação da ferramenta geradora de aplicações comerciais em Java nesta monografia. 1.4 Estrutura dessa Monografia Após este capítulo introdutório, esta monografia está organizada conforme a estrutura que segue. O Capítulo 2 aborda os conceitos relacionados ao banco de dados e seu catálogo, como o SGBD Interbase organiza seu catálogo e as consultas que retornam as informações contidas neste catálogo. Na seqüência é mostrada a

25 23 implementação de um programa exemplo que recupera as informações de um banco de dados criado no SGBD Interbase. O capítulo 3 elucida os aspectos de como Java interage com um SGBD por meio da API JDBC (java.sql). Também são mostrados exemplos de uma classe de conexão com um SGBD relacional em Java e exemplos de como utilizar esta classe. O capítulo 4 apresenta as ferramentas utilizadas para a criação e design dos relatórios, bem como todos os passos para a criação de um relatório dentro destas ferramentas. Também são apresentados exemplos práticos de como estar utilizando e configurando estas ferramentas.

26 24 2 CATÁLOGO DO BANCO DE DADOS O catálogo do SGBD é uma área de dados, normalmente constituída de tabelas no banco de dados, responsável pelo armazenamento das informações exclusivas e necessárias ao funcionamento do SGBD, ela armazena uma variedade de informações, tais como: tipos e formatos de dados suportados, tabelas existentes no banco de dados, atributos, chaves primárias, secundárias e estrangeiras, relacionamentos entre tabelas, procedures, visões, regras, triggers, stored procedure, log de transações, usuários e permissões, informações sobre cada constraint criada, informações sobre replicação de dados, entre outras. 2.1 Catálogo do banco de dados Interbase Todo SGBD possui uma organização de seu catálogo, no caso do Interbase, seu catálogo é armazenado em tabelas com o nome começando com RDB$, sendo que cada tabela armazena um conjunto de campos com informações específicas. No desenvolvimento da ferramenta serão utilizadas algumas tabelas e campos do catálogo do banco de dados Interbase da aplicação, para coletar informações e parametrizar a ferramenta de forma a gerar o código-fonte da aplicação comercial em Java. A figura 1 mostra as tabelas e campos do catálogo do banco de dados, utilizadas na parametrização da ferramenta. FIGURA 1 Tabelas e campos do catálogo Interbase.

27 25 As tabelas apresentadas na figura 1, armazenam informações necessárias para o funcionamento do SGBD. Abaixo é mostrada uma descrição da função de cada tabela e seus respectivos campos, sendo que sua utilização exemplificada será mostrada mais a frente. RDB$RELATIONS: Tabela responsável pelo armazenamento das tabelas contidas no banco de dados. Campo da tabela RDB$RELATIONS: RDB$RELATION_NAME Nome da tabela, se começar com RDB$, significa que é uma tabela do catálogo. RDB$RELATION_FIELDS: Tabela responsável pelo armazenamento das informações dos atributos ou campos das tabelas. Campos da tabela RDB$RELATION_FIELDS: RDB$FIELD_SOURCE Nome do campo atribuído pelo SGBD, como uma chave primária. RDB$FIELD_NAME Nome do campo atribuído pelo usuário no momento da criação das tabelas. RDB$RELATION_NAME Nome da tabela que o campo pertence. RDB$FIELD_POSITION Posição do campo na tabela. RDB$FIELDS: Tabela responsável pelo armazenamento das informações. Campos da tabela RDB$FIELDS: RDB$FIELD_NAME Normalmente nomeado como RDB$<NUMERO>, sendo que <NUMERO> corresponde a um número seqüencial inteiro. RDB$FIELD_TYPE Código do tipo de dados do campo. RDB$FIELD_LENGTH Tamanho do campo.

28 26 RDB$TYPES: Tabela responsável pelo armazenamento dos tipos de dados reconhecidos pelo Interbase. Campos da tabela RDB$TYPES: RDB$FIELD_NAME Categoria do tipo, pode ser tipo de campos, sub-tipos, trigger, etc. RDB$TYPE Código do tipo. RDB$TYPE_NAME Nome do tipo. RDB$INDICES: Tabela responsável pelo armazenamento dos relacionamentos das tabelas. Campos da tabela RDB$INDICES: RDB$INDEX_NAME Representa o tipo do índice. RDB$RELATION_NAME Representa a tabela do relacionamento. RDB$FOREIGN_KEY Representa se a tabela possui chave estrangeira. RDB$INDEX_SEGMENTS: Tabela responsável pelo armazenamento das chaves primárias e estrangeiras. Campos da tabela RDB$INDEX_SEGMENTS: RDB$INDEX_NAME Representa se o campo é chave primária ou estrangeira. RDB$FIELD_NAME Representa o nome campo. Para demonstrar a estrutura do catálogo do banco de dados Interbase, foi implementado um programa exemplo em Borland Delphi 5, por ser um ambiente de programação Pascal e seu código-fonte ser de fácil entendimento. Como parte do exemplo, foi criado um modelo de banco de dados, contendo informações de uma simples venda de produtos, abordado nesta monografia como Banco de Vendas, como ilustra a figura 2.

29 27 FIGURA 2 Tabelas do banco de vendas. Depois de montadas as tabelas da figura 2, o próximo passo é gerar a SQL do banco de dados para que o mesmo possa ser criado no SGBD Interbase, a figura 3 mostra a SQL utilizada para criar o banco de vendas do programa exemplo CREATE TABLE Medidas ( med_cod INTEGER NOT NULL, med_nome VARCHAR(20), med_sigla CHAR(3), CONSTRAINT XPKMedidas PRIMARY KEY (med_cod) ); CREATE TABLE Produtos ( pro_cod INTEGER NOT NULL, prod_nome VARCHAR(20) NOT NULL, med_cod INTEGER NOT NULL, prod_preco DOUBLE PRECISION NOT NULL, CONSTRAINT XPKProdutos PRIMARY KEY (pro_cod) ); CREATE TABLE Clientes ( cli_cod INTEGER NOT NULL, cli_nome VARCHAR(50) NOT NULL, cli_endereco VARCHAR(50), cli_cep CHAR(9), cli_cidade VARCHAR(30), FIGURA 3 SQL de criação do banco de vendas.

30 cli_fone CHAR(13), CONSTRAINT XPKClientes PRIMARY KEY (cli_cod) ); CREATE TABLE vendas ( ven_cod INTEGER NOT NULL, ven_data TIMESTAMP NOT NULL, cli_cod INTEGER NOT NULL, ven_valortotal DOUBLE PRECISION NOT NULL, ven_desconto DOUBLE PRECISION, ven_valorpago DOUBLE PRECISION NOT NULL, CONSTRAINT XPKvendas PRIMARY KEY (ven_cod) ); CREATE TABLE itens_venda ( ven_cod INTEGER NOT NULL, pro_cod INTEGER NOT NULL, iv_qtde FLOAT NOT NULL, CONSTRAINT XPKitens_venda PRIMARY KEY (ven_cod, pro_cod) ); ALTER TABLE Produtos ADD CONSTRAINT R_4 FOREIGN KEY (med_cod) REFERENCES Medidas; ALTER TABLE vendas ADD CONSTRAINT R_5 FOREIGN KEY (cli_cod) REFERENCES Clientes; ALTER TABLE itens_venda ADD CONSTRAINT R_3 FOREIGN KEY (pro_cod) REFERENCES Produtos; ALTER TABLE itens_venda ADD CONSTRAINT R_2 FOREIGN KEY (ven_cod) REFERENCES vendas; FIGURA 3 SQL de criação do banco de vendas (continuação). As linhas 1 a 42 da figura 3 correspondem às instruções SQL necessárias para a criação das tabelas com seus respectivos campos, as linhas 43 a 58 criam os relacionamentos entre as tabelas. O programa exemplo criado possui uma fácil interação com o usuário, contendo suas funcionalidade em eventos dos botões mostrado na figura 4.

31 29 FIGURA 4 Programa exemplo do catálogo do banco de vendas. O programa mostrado na figura 4 possui quatro botões (TBitBtn), sendo que clicando em qualquer um dos quatro botões pode-se visualizar o resultado gerado na tabela (TDBGrid) localizada abaixo dos botões. Para que o programa exemplo pudesse encontrar e se conectar com o banco de dados exemplo foi preciso utilizar um componente de conexão (TDataSource) com a string de conexão mostrada na figura 5. 1 SERVER NAME=c:\vendas.gdb 2 USER NAME=SYSDBA 3 PASSWORD=masterkey FIGURA 5 String de conexão com o banco de vendas. A linha 1 da figura 5 informa a localização do banco de dados, a linha 2 e 3 informam nome do usuário e sua senha respectivamente. A função relacionada ao evento de cada botão será mostrada a seguir, sendo que cada botão possuirá a consulta mostrada na tela e seu código-fonte respectivo. O primeiro botão a ser detalhado refere-se à busca pelas tabelas do banco de vendas (figura 2) no catálogo, a figura 6 mostra os nomes das tabelas retornadas pela consulta. A nomenclatura tabelas, campos e chaves do usuário serão utilizadas para definir as tabelas, campos e chaves, definidas na criação do banco de dados pelo usuário.

32 30 FIGURA 6 Tabelas do banco de vendas. Ao clicar no botão Tabelas são mostradas na tela as tabelas do banco de vendas, representadas na figura 6. A figura 7 detalha o código-fonte com a SQL necessária para retornar as tabelas do banco de vendas procedure TF_Vendas.B_TabelasClick(Sender: TObject); begin Q_Catalogo.Close; Q_Catalogo.SQL.Clear; Q_Catalogo.SQL.Add('select RDB$RELATION_NAME TABELA from RDB$RELATIONS'); Q_Catalogo.SQL.Add('where RDB$RELATION_NAME not like "RDB$%"'); Q_Catalogo.SQL.Add('order by RDB$RELATION_NAME'); Q_Catalogo.Open; end; FIGURA 7 SQL que retorna as tabelas do banco de vendas. As linhas de 5 a 7 da figura 7 representam a SQL necessária para retornar as tabelas do banco de vendas no catálogo, a instrução SQL da linha 5 seleciona o campo RDB$RELATION_NAME da tabela RDB$RELATIONS, limitando-os com a instrução SQL da linha 6, retornando apenas as tabelas cujo inicio do nome não comece com RDB$ (not like "RDB$%"), tabelas cujo nome comece com RDB$ são tabelas do SGBD e não são interessantes ao propósito deste projeto, e por último a linha 7 ordena o campo RDB$RELATION_NAME em ordem crescente.

33 31 O segundo botão a ser detalhado refere-se à busca pelos campos das tabelas do banco de vendas e suas informações no catálogo, a figura 8 mostra os campos das tabelas retornadas pela consulta. FIGURA 8 Campos das tabelas do banco de vendas. Ao clicar no botão Campos são mostrados na tela os campos de cada tabela do banco de vendas, representadas na figura 8. A figura 9 detalha o código-fonte com a SQL necessária para retornar os campos das tabelas do banco de vendas procedure TF_Vendas.B_CamposClick(Sender: TObject); begin Q_Catalogo.Close; Q_Catalogo.SQL.Clear; Q_Catalogo.SQL.Add('select RF.RDB$RELATION_NAME TABELA,'); Q_Catalogo.SQL.Add(' RF.RDB$FIELD_POSITION POSICAO,'); Q_Catalogo.SQL.Add(' RF.RDB$FIELD_NAME CAMPO,'); Q_Catalogo.SQL.Add(' T.RDB$TYPE_NAME TIPO,'); Q_Catalogo.SQL.Add(' F.RDB$FIELD_LENGTH TAMANHO'); Q_Catalogo.SQL.Add('from RDB$FIELDS F, RDB$RELATION_FIELDS RF, RDB$TYPES T'); Q_Catalogo.SQL.Add('where RF.RDB$FIELD_NAME NOT LIKE "RDB$%" and'); Q_Catalogo.SQL.Add(' RF.RDB$FIELD_SOURCE = F.RDB$FIELD_NAME and'); Q_Catalogo.SQL.Add(' T.RDB$FIELD_NAME = "RDB$FIELD_TYPE" and'); Q_Catalogo.SQL.Add(' F.RDB$FIELD_TYPE = T.RDB$TYPE'); Q_Catalogo.SQL.Add('order by RF.RDB$RELATION_NAME, RF.RDB$FIELD_POSITION'); Q_Catalogo.Open; end; FIGURA 9 SQL que retorna os campos do banco de vendas.

34 32 As linhas de 6 a 16 da figura 9 representam a SQL necessária para retornar os campos das tabelas do banco de vendas no catálogo, a instrução SQL da linha 6 a 10 seleciona os campos a serem retornados pela consultas dentro das tabelas: RDB$FIELDS, RDB$RELATION_FIELDS e RDB$TYPES, limitando-os com a instrução SQL da linha 12 a 15, retornando apenas as tabelas cujo inicio do nome não comece com RDB$ (not like "RDB$%"), o nome do tipo (RDB$FIELD_NAME), especificado na linha 13, deve possuir a nomenclatura RDB$FIELDS_TYPE que especifica que o tipo do campo do Banco de Dados é do tipo campo (linha 14) e por último a linha 16 ordena os campos RDB$RELATION_NAME e RDB$FIELD_POSITION em ordem crescente. O terceiro botão a ser detalhado refere-se à busca pelas chaves primárias das tabelas no catálogo do banco de vendas, a figura 10 mostra as chaves das tabelas retornadas pela consulta. FIGURA 10 Chaves primárias do banco de vendas. Ao clicar no botão Chaves Primárias são mostradas na tela as chaves primárias de cada tabela do banco de vendas, representadas na figura 10. A figura 11 detalha o código-fonte com a SQL necessária para retornar as chaves primárias de todas as tabelas do banco de vendas.

35 procedure TF_Vendas.B_PrimariasClick(Sender: TObject); begin Q_Catalogo.Close; Q_Catalogo.SQL.Clear; Q_Catalogo.SQL.Add('select I.RDB$RELATION_NAME TABELA,S.RDB$FIELD_NAME CHAVE_PRIMARIA'); Q_Catalogo.SQL.Add('from RDB$INDICES I, RDB$INDEX_SEGMENTS S'); Q_Catalogo.SQL.Add('where I.RDB$INDEX_NAME like "RDB$PRIMARY%" and'); Q_Catalogo.SQL.Add(' I.RDB$INDEX_NAME = S.RDB$INDEX_NAME'); Q_Catalogo.Open; end; FIGURA 11 SQL que retorna as chaves primárias do catálogo. As linhas 5 a 8 representam a SQL necessária para retornar as chaves primárias das tabelas do banco de vendas, a linha 5 seleciona os campos a serem retornados pela consulta nas tabelas definidas na linha 6: RDB$INDICES e RDB$INDEX_SEGMENTS, limitando-os com a instrução da linha 7, cujo objetivo é pesquisar apenas as chaves primárias, que o nome comece com RDB$PRIMARY. O quarto e último botão a ser detalhado refere-se à busca pelas chaves estrangeiras nas tabelas no catálogo do banco de vendas, a figura 12 mostra as chaves das tabelas retornadas pela consulta. FIGURA 12 Chaves estrangeiras do catálogo. Ao clicar no botão Chaves Estrangeiras são mostradas na tela as chaves estrangeiras de cada tabela do banco de vendas, representadas na figura 12.

36 34 A figura 13 detalha o código-fonte com a SQL necessária para retornar as chaves estrangeiras de todas as tabelas do banco de vendas procedure TF_Vendas.B_EstrangeirasClick(Sender: TObject); begin Q_Catalogo.Close; Q_Catalogo.SQL.Clear; Q_Catalogo.SQL.Add('select I.RDB$RELATION_NAME TABELA,S.RDB$FIELD_NAME CHAVE_ESTRANGEIRA'); Q_Catalogo.SQL.Add('from RDB$INDICES I, RDB$INDEX_SEGMENTS S'); Q_Catalogo.SQL.Add('where I.RDB$INDEX_NAME like "RDB$FOREIGN%" and'); Q_Catalogo.SQL.Add(' I.RDB$FOREIGN_KEY = S.RDB$INDEX_NAME'); Q_Catalogo.SQL.Add('order by I.RDB$INDEX_NAME'); Q_Catalogo.Open; end; FIGURA 13 SQL que retorna as chaves estrangeiras. As linhas 5 a 10 representam a SQL necessária para retornar as chaves estrangeiras das tabelas no catálogo do banco de vendas, a linha 5 seleciona os campos a serem retornados pela consulta nas tabelas definidas na linha 7: RDB$INDICES e RDB$INDEX_SEGMENTS, limitando-os com a instrução das linhas 8 e 9, cujo objetivo é buscar apenas as chaves estrangeiras, que o nome comece com RDB$FOREIGN.

37 35 3 JDBC JAVA DATABASE CONNECTIVITY JDBC é uma coleção de classes Java em nível de SQL que permite adicionar instruções SQL como argumentos para métodos em interfaces JDBC (REESE, 2001). Para que a JDBC possa se comunicar com uma diversidade de SGBD (Sistema Gerenciador de Banco de Dados) diferentes, é preciso que a empresa distribuidora do SGBD disponibilize drivers, de modo a direcionar as instruções SQL da aplicação Java para o SGBD e os mesmos reconheçam e interpretem de maneira adequada esses comandos, este driver converte os comandos da API JDBC para comandos nativos do SGBD. Mais precisamente, o JDBC consiste de duas camadas. A camada superior é a API JDBC. Essa API se comunica com a API de driver gerenciador JDBC, enviando para ela as diversas instruções SQL. O gerenciador deve se comunicar com os vários drivers de terceiros que efetivamente se conectam com o banco de dados, e retornar as informações da consulta ou executar a ação especificada por ela (HORSTMANN, 2002). A JDBC por utilizar SQL que é uma linguagem padrão para a maioria dos SGBD, possibilita que os desenvolvedores de aplicações em Java não se preocupem com o SGBD que a aplicação estará se comunicando, oferecendo liberdade para que o mesmo código possa ser executado em diversos SGBD, sem a necessidade de modificar todo o código, apenas o driver do Banco de Dados, para se obter uma lista completa dos drivers JDBC disponíveis, acesse o site Existem várias formas de se conectar com um banco de dados através de drivers JDBC, eles são classificados nos seguintes tipos: Transforma JDBC em ODBC e emprega um driver ODBC para se comunicar com o banco de dados, chamada de ponte JDBC/ODBC. Entretanto, a ponte não oferece suporte a JDBC2 e exige a distribuição e a configuração correta de um driver ODBC (HORSTMANN, 2002), ficando ainda restrito a plataforma Windows, não se recomenda utilizar a ponte a não ser para testes;

38 36 Escrito Parcialmente em Java e código nativo; Biblioteca em Java puro que utiliza um protocolo independente de banco de dados para enviar pedidos JDBC ao componente servidor; transforma esses pedidos em protocolo específico do SGBD; Biblioteca em Java puro que transforma pedidos JDBC diretamente em um protocolo específico do SGBD (HORSTMANN, 2002). A API JDBC pode ser utilizada em qualquer aplicação desenvolvida em Java, ela é nada mais que o pacote java.sql, onde podem ser encontradas as interfaces necessárias para acessar e manipular a maioria dos SGBD relacionais existentes no mercado. O programador precisa somente conhecer o modo de utilizar a API JDBC e a forma como o driver específico se conecta ao banco. 3.2 Conexão com o Banco de Dados Interbase em Java Para que se possa manipular e obter as informações contidas no banco de dados é necessário que se estabeleça uma conexão com o banco de dados. A API JDBC Java implementa uma variedade de classes com métodos e objetos para acessar e manipular um banco de dados qualquer. Na seção seguinte será detalhada e exemplificada cada uma dessas classes Classe de Conexão em Java Para se conectar a um SGBD foi criada uma classe de conexão em Java, onde foram implementados os métodos Conecta(), Desconecta() e getconexao(). A figura 14 demonstra o código-fonte da Classe de Conexão import java.sql.*; import java.awt.event.*; public class Conexao { private String driver = "org.firebirdsql.jdbc.fbdriver"; private String url = "jdbc:firebirdsql:localhost/3050:c:\\vendas.gdb"; private String usuario = "SYSDBA"; FIGURA 14 Classe de conexão com um banco de dados.

39 37 9 private String senha = "masterkey"; private Connection con; public boolean Conecta() 14 { 15 boolean status=false; 16 try { 17 Class.forName(driver); 18 try { 19 con = DriverManager.getConnection(url,usuario,senha); 20 status=true; 21 } 22 catch(sqlexception sqle) { 23 sqle.printstacktrace(); 24 status=false; 25 } 26 } 27 catch(classnotfoundexception cnfe) { 28 cnfe.printstacktrace(); 29 status=false; 30 } 31 return(status); 32 } public void Desconecta() 35 { 36 try { 37 con.close(); 38 } 39 catch(sqlexception sqle) { 40 sqle.printstacktrace(); 41 } 42 } public Connection getconexao() 45 { 46 return(con); 47 } 48 } FIGURA 14 Classe de conexão com um banco de dados (continuação). As linhas 1 e 2 da figura 14 adicionam a classe Conexao às bibliotecas java.sql que é o JDBC e as bibliotecas java.awt.event para tratamento de exceção caso ocorra algum erro. As linhas 6 a 9 especificam as variáveis de instância da classe Conexao, onde a variável driver especifica o nome do driver utilizado, a url especifica a porta utilizada pelo SGBD e o caminho do banco de

40 38 dados, a variável usuario especifica o usuário que acessará o banco de dados e por último a variável senha que especifica a senha do usuário. O método Conecta() (linhas 13 a 32) é responsável pelo estabelecimento de uma conexão e retorna um boolean indicando se foi possível ou não se conectar ao banco. A carga do driver utilizada é feita dinamicamente na linha 17. Após carregar o driver é preciso estabelecer a conexão (linha 19) passando como parâmetro a url, o usuario e a senha do banco de dados, a classe DriverManager é responsável pela abertura e fechamento de uma conexão com o banco através de um driver JDBC devidamente registrado, ao final do método é retornado um boolean indicando se foi possível completar a conexão ou se houve erros durante o estabelecimento da conexão. Quando há a abertura de uma conexão, a classe DriverManager seleciona o driver conforme a URL especificada pelo usuário, uma vez estabelecida a conexão, as instruções ao banco de dados são efetuadas diretamente ao JDBC, que as converte para comandos do SGBD. O método Desconecta() (linhas 34 a 42) é responsável pela desconexão com o banco de dado, sendo possível através do método close() (linha 37). Por último, o método getconexao() (linhas 44 a 47) responsável por retornar o objeto representando a conexão do objeto Conexao. Para demonstração da utilização da classe Conexao, representada na figura 14, foi implementado um programa cujo resultado é mostrado na figura 15. FIGURA 15 Consulta de produtos utilizando a classe Conexao.

41 39 A figura 16 apresenta a utilização da classe Conexao com uma consulta na tabela de produtos do banco de dados exemplificado anteriormente na figura 3 da seção 2.1 do capítulo import java.awt.event.*; import javax.swing.*; import java.sql.*; import javax.swing.table.*; class PesquisaProduto extends JFrame { private Conexao con; private JTable JTTabela; private DefaultTableModel model; public PesquisaProduto() { super("exemplo de Utilização da Classe Conexao"); constroitela(); Pesquisa(); setdefaultcloseoperation(jframe.exit_on_close); } private void constroitela() { setsize(400,150); model = new DefaultTableModel(); model.addcolumn("cod."); model.addcolumn("nome Produto"); model.addcolumn("medida"); model.addcolumn("preço"); JTTabela = new JTable(model); JScrollPane scroller= new JScrollPane(JTTabela); getcontentpane().add(scroller); JTTabela.getColumnModel().getColumn(0).setPreferredWidth(30); JTTabela.getColumnModel().getColumn(1).setPreferredWidth(290); } private void Pesquisa() { con = new Conexao(); if (con.conecta()) { try { Statement st = con.retconexao().createstatement(); String sql = "select p.pro_cod, p.prod_nome, m.med_sigla, "+ "p.prod_preco from produtos p, medidas m "+ "where p.med_cod = m.med_cod"; FIGURA 16 Código-fonte da consulta utilizando a classe Conexao.

42 40 46 ResultSet rs = st.executequery(sql); 47 while (rs.next()) 48 { 49 String linha[]={rs.getstring("pro_cod"), 50 rs.getstring("prod_nome"), 51 rs.getstring("med_sigla"), 52 "R$ "+rs.getstring("prod_preco")}; 53 model.addrow(linha); 54 } 55 st.close(); 56 con.desconecta(); 57 } 58 catch(sqlexception e){e.printstacktrace();} 59 } 60 } public static void main(string args[]) 63 { 64 PesquisaProduto p = new PesquisaProduto(); 65 p.setvisible(true); 66 } 67 } FIGURA 16 Código-fonte da consulta utilizando a classe Conexão (continuação). As linhas 1 a 4 da figura 16, correspondem a chamada das bibliotecas necessárias ao funcionamento do exemplo, foi criada uma classe PesquisaProduto (linhas 6 a 67) herança de JFrame, as linhas de 8 a 10 declaram as variáveis de instâncias da classe PesquisaProduto, o objeto con (linha 8) da classe Conexao é responsável pela conexão com o SGBD, a JTTabela da classe JTable (linha 9) é responsável pela exibição da consulta na tela, este objeto é uma grid semelhante a uma DBGrid do Delphi ou planilha do Microsoft Excel e o model da classe DefaultTableModel representa o modelo que é aplicado ao JTTable, definindo o nome das colunas. O método Pesquisa() (linha 35 a 60) é responsável pela conexão com o banco de dados e a exibição dos dados na tela, na linha 37 foi instanciada a conexão através do objeto com, se a conexão foi estabelecida (linha 38), então deve-se efetuar a SQL da consulta, com a conexão estabelecida, é necessário manipular o banco de dados através de comandos SQL. A API JDBC não tem nenhuma restrição quanto ao dialeto SQL, sendo possível enviar instruções em qualquer dialeto SQL ao banco, o objeto da linha 42, st da classe Statement, será

43 41 utilizado para enviar comandos SQL simples ao banco de dados, isto é, que não envolvem parâmetros. As linhas 43 a 45 criam a SQL necessária para executar a consulta, com o comando (linha 46) executequery(sql), passando como parâmetro a SQL desejada é possível retornar as informações da consulta, estas informações são chamadas conjunto de resultado ou simplesmente ResultSet. O rs é um objeto da classe ResultSet, que contém registros retornados pela consulta SQL, como uma consulta pode retornar mais de um registro de resultado é preciso manipulá-los de forma a capturar todas os registros retornados, as linhas 47 a 54 fazem este tratamento com a condição de adicionar ao model todos os registros de rs. O método next() permite mover o cursor entre cada registro da tabela, um após o outro sucessivamente até o final dos registros, quando isto ocorrer o método retornará false. Além do método next() é possível utilizar os métodos first() e last(), que move o cursor para o início e para o final dos registros respectivamente. 3.3 Métodos Java para recuperação de tipos SQL Para recuperação dos valores contidos em cada coluna de um registro precisa se previamente conhecer o tipo do valor associado ao atributo (o domínio do atributo). Para isso o objeto ResultSet dispõe de métodos apropriados para recuperação de dados SQL. A tabela 1 demonstra os métodos em Java.

44 42 TABELA 1 Métodos Java para recuperação de tipos SQL. TINYINT SMALLINT INTEGER BIGINT REAL FLOAT DOUBLE DECIMAL NUMERIC BIT CHAR VARCHAR LONGVARCHAR BINARY VARBINARY LONGVARBINARY DATE TIME TIMESTAMP CLOB BLOB ARRAY REF STRUCT JAVA OBJECT getbyte X getshort getint getlong getfloat getdouble getbigdecimal getboolean getstring getbytes X X X X X X X X X X X X X getdate gettime gettimestamp getasciistream getunicodestream getbinarystream getclob getblob getarray getref getcharacterstream getobject X X X X X X X X X X X X X As linhas da tabela 1 representam os métodos em Java e as colunas representam os tipos em SQL, os x representa qual método em Java é apropriado para recuperar o tipo em SQL.

45 43 4 A FERRAMENTA A ferramenta objetivo desta monografia, nomeada GenJava, tem a finalidade de gerar código-fonte de aplicações comerciais a partir da coleta de dados contidos no banco de dados da aplicação comercial a ser gerada, em uma área de dados conhecida como catálogo do banco de dados, que em um passo anterior ao da geração do código-fonte pela ferramenta GenJava, deve se construir e modelar este banco de dados em Interbase. Estas aplicações comerciais são compostas por cadastro, consultas, relatórios e movimentações, uma vez que para cada uma destas operações foi implementado um template, onde possui a finalidade de parametrizar a ferramenta de modo a gerar o código-fonte da aplicação comercial. Todos os templates da ferramenta GenJava possuem interfaces gráficas, implementadas através das classes do pacote Swing da linguagem Java, de modo a proporcionar uma melhor visualização e manipulação das rotinas pelos usuários, desta forma a aplicação se torna mais amigável e de simples manuseio, destinando-se a usuários e programadores com nível intermediário na linguagem Java e no banco de dados Interbase. A figura 17 demonstra a tela inicial da ferramenta. FIGURA 17 Tela inicial da ferramenta. Selecionando a opção Arquivo no menu principal da figura 17, abrese a tela de configuração dos parâmetros iniciais da aplicação comercial a ser gerada, demonstrada na seção 4.1 Parâmetros iniciais da ferramenta.

46 44 É muito importante frisar o perfil do usuário que utilizará a ferramenta. Estes usuários não precisam ser experts em Java nem mesmo em banco de dados, mais devem possuir os conceitos básicos da linguagem Java, manipulação de suas bibliotecas de interação com o usuário (Swing) e ter conhecimento da modelagem do banco de dados Interbase da aplicação. Quanto ao código-fonte da aplicação comercial gerada, foi levado em consideração sua legibilidade e sua estruturação, que diz respeito a um conjunto de convenções que auxiliam a leitura e o entendimento pelos programadores, para que isso fosse possível, foram utilizados os conceitos da orientação a objetos, permitindo a componentização e o reuso dos recursos implementados. 4.1 Parâmetros Iniciais da Aplicação Comercial Em um momento inicial, o usuário deverá configurar os respectivos parâmetros para conexão com o banco de dados, tais como: nome do usuário, senha, driver JDBC utilizado e a localização do banco de dados (local ou remoto) e do kit de desenvolvimento Java, mais conhecido como JDK - Java Development Kit (Java, 2004). Para a inserção destes dados, foi implementada uma tela que permite com que o usuário, insira os dados de maneira simples e amigável, o layout desta tela segue nas figuras 18a e 18b. (a) (b) FIGURA 18 Parâmetros iniciais da aplicação.

47 45 Os dados da aplicação (figura 18a) são necessários para que a ferramenta localize as bibliotecas Java para gerar o arquivo jar e salvá-lo no disco. Os dados que dizem respeito ao banco de dados (figura 18b), são fundamentais para que a ferramenta possa encontrar o banco de dados e consiga desta forma, acessar seu catálogo de dados para parametrizar os templates da ferramenta responsáveis por gerar cada operação da aplicação (cadastro, consulta, relatório e movimentação) e posterior à geração da aplicação comercial, acessar os dados através de comandos SQL gerenciados pela camada de persistência, comando estes que permitem inserir, alterar, deletar e recuperar os dados do banco de dados. Determinada às configurações do banco de dados, o próximo passo é se conectar com o banco de dados através da classe Conexao, demonstrada na seção Classe de Conexão em Java. Depois de determinados os parâmetros iniciais e selecionado o botão OK da figura 18, inicia-se a tela responsável por acessar os templates das operações da aplicação, de acordo com a escolha do usuário, a figura 19 demonstra esta tela. FIGURA 19 Escolha dos templates da aplicação A primeira coluna da tabela ilustrada na tela de escolha dos templates das telas da aplicação, ilustrada na figura 19, demonstra todas as tabelas contidas no catálogo do banco de dados (acessadas com a instrução SQL da figura 7 da

48 46 seção 2.1 do capítulo 2) da aplicação, seguida de mais três colunas com a opção de checagem, Cadastros, Consultas/Relatórios e Movimentações respectivamente. A idéia desta tela é que o usuário determine o que a tabela do banco deverá gerar, no caso as quatro operações implementadas na ferramenta (cadastro, consulta/relatório e movimentação). Para cada coluna checada, representando as operações da aplicação comercial a ser gerada, deve-se levar em consideração alguns critérios básicos, são eles: Cadastro Para que se gere um cadastro é preciso que a tabela do banco possua apenas uma chave primária do tipo inteiro, N campos de tipos reconhecidos pela ferramenta (seção 4.2 Mapeamento Interbase X Java) e N chaves estrangeiras do tipo inteiro; Consulta/Relatório Não há restrição quanto ao número de campos é preciso somente que os campos sejam de tipos suportados pela ferramenta; Movimentação A tabela a gerar uma movimentação deve ser do tipo mestre (entidade forte), seguir as regras de um cadastro e possuir uma tabela detalhe (entidade fraca), onde, a tabela detalhe deve possuir a chave primária composta por as duas tabela (mestre/detalhe) ou uma chave seqüencial (auto-incremento) do tipo inteiro. Depois de checadas as operações que farão parte da aplicação e selecionado o botão OK da figura 19, o usuário deverá parametrizar cada uma destas operações através de seus respectivos templates. Além de gerar os templates de parametrização das operações da aplicação a ser gerada, esta tela (figura 19) tem o papel de gerar as classes de mapeamento Interbase X Java, apresentada na seção 4.2, através da leitura do catálogo do banco obtendo-se todas as tabelas, campos, relacionamentos e tipos de dados. Uma vez obtida estas informações a ferramenta gera as classes de mapeamento, cuja função é auxiliar a camada de persistência e interagir com a camada de negócio. Para que fosse possível persistir os dados da memória no

49 47 banco de dados de maneira simplificada, limpa e coesa, foi implementada uma camada de persistência utilizando os conceitos de reflexão (Reflection) de Java. 4.2 Mapeamento Interbase x Java O mapeamento das tabelas do banco de dados consiste na construção de classes em Java com a mesma estrutura de uma tabela do banco de dados. Cada classe de mapeamento tem seu nome definido através do nome de uma tabela do banco de dados e suas variáveis de instâncias é o reflexo dos campos da tabela, com seus respectivos métodos get e set devidamente declarados com seus tipos Interbase convertidos em tipos Java. A tabela 2 apresenta os tipos de dados suportados pela ferramenta. TABELA 2 Tipos Interbase e Java. Interbase VARYING TEXT LONG DOUBLE FLOAT TIMESTAMP Java java.lang.string java.lang.string java.lang.long java.lang.double java.lang.float java.util.date Esse processo de mapeamento do banco de dados para classes correspondentes em Java é o ponto de partida para se gerar os cadastros, consultas/relatórios e movimentações que farão parte da aplicação comercial. O processo de mapeamento interage como um intermediário entre a camada de negócio e de persistência, permitindo que os dados exibidos na tela sejam persistidos no banco de dados e vice-versa, possibilitando a minimização do uso de instruções SQL no meio do código-fonte, dificultando a componentização e a legibilidade. A figura 20 demonstra uma classe de mapeamento gerada a partir de uma tabela do banco de dados definida nas figuras 2 e 3 do capítulo public class MEDIDAS { private java.lang.integer MED_COD; private java.lang.string MED_NOME, MED_SIGLA; public void setmed_cod(java.lang.integer MED_COD) { FIGURA 20 Exemplo de uma classe de mapeamento.

50 48 5 this.med_cod=med_cod; 6 } 7 public void setmed_nome(java.lang.string MED_NOME) { 8 this.med_nome=med_nome; 9 } 10 public void setmed_sigla(java.lang.string MED_SIGLA) { 11 this.med_sigla=med_sigla; 12 } 13 public java.lang.integer getmed_cod() { 14 return this.med_cod; 15 } 16 public java.lang.string getmed_nome() { 17 return this.med_nome; 18 } 19 public java.lang.string getmed_sigla() { 20 return this.med_sigla; 21 } 22 } FIGURA 20 Exemplo de uma classe de mapeamento (continuação). O trecho de código apresentado na figura 20 demonstra uma classe de mapeamento gerada a partir da tabela MEDIDAS apresentada nas figuras 2 e 3 da seção 2.1 do capítulo 2. O nome da classe de mapeamento é definido levando em consideração o nome da tabela do banco de dados, as linhas 2 e 3 definem a declaração das variáveis de instâncias representando os campos da tabela com seus respectivos tipos em Java, as linhas 4 a 12 representam os métodos sets responsáveis por atribuir valores às variáveis de instância, e por último as linhas 13 a 21 representam os métodos gets, responsáveis por de recuperarem os valores atribuídos as variáveis de instâncias, lembrando que o nome dos métodos é definido através do nome do campo na tabela, recuperados por meio da instrução SQL definida na figura 9 da seção 2.1 do capítulo 2. Para exemplificar a utilização da classe de mapeamento definida na figura 20 foi implementado um trecho de código, apresentado na figura MEDIDAS objeto = new MEDIDAS(); if(this.getop()=='n') objeto.setmed_cod(persistent.getmax(objeto, "MED_COD")); else objeto.setmed_cod(integer.parseint(jtextfield0.gettext().trim())); objeto.setmed_nome(utils.trunc(jtextfield1.gettext().trim(), 50)); objeto.setmed_sigla(utils.trunc(jtextfield2.gettext().trim(), 3)); if(persistent.gravar(objeto)) { FIGURA 21 Exemplo de utilização da classe de mapeamento.

51 JOptionPane.showMessageDialog(this,"Sucesso ao gravar os dados","aviso", JOptionPane.INFORMATION_MESSAGE); } else JOptionPane.showMessageDialog(this,"Erro ao gravar os dados,"erro", JOptionPane.ERROR_MESSAGE); FIGURA 21 Exemplo de utilização da classe de mapeamento (continuação). A linha 1 da figura 21 representa a criação de um objeto da classe MEDIDAS definida na figura 20, as linhas 2 a 6 representam a atribuição dos valores definidos nos componentes gráficos da classe JTextFields às variáveis de instâncias do objeto objeto, a linha 7 representa a persistência do objeto objeto no banco de dados, através do método Gravar da camada de persistência, apresentada na seção 4.3. Por último, as linhas 8 a 12 definem o tratamento de erro retornado pelo método Gravar da camada de persistência. 4.3 Camada de Persistência A camada de persistência é responsável por encapsular toda lógica necessária para que o objeto ou sua coleção seja salvo, recuperado ou excluído de um meio de armazenamento, normalmente um banco de dados. Dessa forma as responsabilidades dos objetos ficam bem claras, permitindo assim não só uma manutenção descomplicada como também abre portas para a componentização dos objetos, ou seja, o reaproveitamento de código. Existem várias técnicas para se implementar uma camada de persistência, na ferramenta GenJava foi desenvolvida uma camada de persistência com a técnica Reflection, que consiste em permitir um programa Java examinar ou fazer a introspecção dele mesmo, de forma a obter suas propriedades e estruturas. Com isso, pode-se, por exemplo, obter o nome de todos os membros de uma classe, como atributos e métodos, bem como executar um método usando a invocação dinâmica. Utilizando-se da classe Reflection é possível implementar uma camada de persistência genérica para que seja possível persistir qualquer objeto envolvido no sistema. Para que se possa efetuar a persistência de um objeto é preciso que o mesmo esteja mapeado no banco de dados, com sua estrutura

52 50 idêntica a do banco de dados, apresentado na seção 4.2 (Mapeamento Interbase X Java); a figura 22 exibe os métodos da camada de persistência implementada public class Persistencia { private Conexao con; public Persistencia(Conexao con) {...} private String getfieldsandvalues(object o) { } private String getsetsandvalues(object o) { } private String getstringtype(object o) { } private boolean localizapk(object o, String chave) { } public Integer getmax(object o, String keyfield) { } public boolean Gravar(Object o) { } public ResultSet Recuperar(String sql) { } public boolean Deletar(String sql) {} } FIGURA 22 Métodos da camada de persistência. A linha 4 da figura 22 representa o construtor da classe Persistencia, que recebe como parâmetro um objeto da classe Conexao representando a conexão com o banco de dados onde serão executadas as instruções SQL, as linha 5 e 6 representam os métodos getfieldsandvalues e getsetsandvalues, cujo funcionamento será apresentado nas figuras 23 e 24 respectivamente. O método getstringtype, apresentado na linha 7 é responsável por retornar o formato do valor de um determinado tipo, ou seja, se um valor for do tipo String, ele deverá ser adicionado a instrução SQL com aspas, de forma com que o banco de dados o reconheça como um valor correto. Quando há a necessidade de verificar se um determinado campo é uma chave primária, para que não seja adicionado a cláusula set e sim na cláusula where desta instrução, é necessário que se utilize o método localizapk, apresentado na linha 8. A linha 9 representa o método que retorna o maior código gerado de uma determinada tabela, ideal quando se deseja inserir um novo registro na tabela. Por último, as linhas 10 a 12, são responsáveis por executar as instruções geradas nos métodos getfieldsandvalues e getsetsandvalues apresentados na figura 22.

53 51 A figura 23 detalha o método getfieldsandvalues, responsável por montar a instrução SQL de inserção (insert) no banco de dados private String getfieldsandvalues(object o) { String fields="", values=""; try { Field f[] = o.getclass().getdeclaredfields(); for(int i=0; i<f.length; i++) { Method meth = o.getclass().getmethod("get"+f[i].getname()); Object ret = meth.invoke(o); if(ret!=null) { fields+=f[i].getname()+","; values+=getstringtype(ret)+","; } } } return "("+fields+") values("+values+");"; } FIGURA 23 Montando SQL de inserção. A figura 24 detalha o método getsetsandvalues, responsável por montar a instrução SQL de alteração (update) no banco de dados private String getsetsandvalues(object o) { String sets="", where=""; try { Field f[] = o.getclass().getdeclaredfields(); for(int i=0; i<f.length; i++) { Method meth = o.getclass().getmethod("get"+f[i].getname()); Object ret = meth.invoke(o); boolean status = localizapk(o, f[i].getname()); if(ret!=null) { if(! status) sets +=f[i].getname()+" = "+getstringtype(ret)+","; else where+=f[i].getname()+" = +getstringtype(ret)+" and "; } else sets +=f[i].getname()+" = null,"; } sets = " set "+sets.substring(0,sets.length()-1); if(where.length()>0) { where = " where "+where.substring(0, where.length()-4); return sets+where; } return sets+where; } FIGURA 24 Montando SQL de alteração.

54 Componentes Gráficos Implementados Visando a visualização dos campos do banco de dados na tela da aplicação a ser gerada, foram implementadas classes visuais que permita que os campos do banco de dado sejam mapeados em campos gráficos e editáveis na tela (Edits, ComboBox, Grids). Para melhorar a facilidade de manipulação por parte do usuário, cada chave estrangeira na tabela é mapeada na tela pelos templates como um SJDBComboBox, herdado da classe JComboBox, conectado ao banco de dados, apontando para sua respectiva tabela, de modo que ao abrir uma tela da aplicação, o componente acesse o banco de dados e exiba todos os valores da tabela, segundo as restrições da SQL, a figura 25 ilustra o formato do componente. FIGURA 25 Utilização do componente SJDBComboBox. Uma das classes implementada foi a SJDBTable, herdada das classes JTable e AbstractTableModel, cuja funcionalidade é a exibição dos dados contidos no banco de dados na tela, em um formato de tabela (Grid), a figura 26 ilustra uma tela que utiliza este componente. FIGURA 26 Utilização do componente SJDBTable.

55 Template de Cadastro Este template é responsável por parametrizar a operação de cadastro da aplicação, levando em consideração que ao escolher este template o usuário tenha seguido as regras de construção de um cadastro apresentadas na seção 4.1, a figura 27 ilustra o formato deste template. FIGURA 27 Template de cadastro. A coluna Key Field da figura 27 representa todas as chaves estrangeiras que a tabela possui, localizadas a partir da instrução SQL apresentada na figura 13. A segunda coluna, nomeada de Display Field representa qual campo aparecerá ao usuário, uma vez que na maioria das vezes as chaves estrangeiras são do tipo inteiro, referência a uma chave primária em outra tabela, o que acaba dificultando a visualização dos dados pelo usuário se exibido este campo, a grosso modo, internamente se trabalha com o Key Field e visualmente ao usuário aparece o Display Field, lembrando que toda chave estrangeira aparecerá na tela no formato de um componente SJDBComboBox apresentado na figura 25. A última coluna representa o SQL responsável por recuperar os dados no banco de dados caso haja alguma instrução especial, uma vez que por padrão a ferramenta considera uma instrução SQL como segue na figura 28.

56 select Key Field, Display Field from tabela origem de Display Field order by Display Field FIGURA 28 Instrução SQL padrão do SJDBComboBox. na figura 29. O resultado da configuração do template de cadastro é demonstrado FIGURA 29 Cadastro da aplicação comercial gerada Pode-se perceber que na figura 29, todos os campo da tabela CLIENTES foram colocados na tela no formato de um componente JTextField, padrão aos campos que não são chaves estrangeiras, já os campos que são chaves estrangeiras seguem como componentes da classe SJDBComboBox exemplificado pelo campo EST_UF mais que internamente está sendo considerado o campo EST_COD, como segue na figura Template de Consulta/Relatório Este template é responsável por gerar duas operações da aplicação: consulta e relatório, onde diferem apenas no modo de visualização, no caso das consultas os dados são mostrados em uma SJDBTable e no relatório em formato PDF, podendo ser aberto em qualquer visualizador de PDF, ou ainda, utilizar o visualizador de relatórios em PDF implementado com a biblioteca JPedal (JPedal, 2005) para atender as necessidades da aplicação.

57 55 Antes de ser implementado o template de consulta/relatório, foram estudadas algumas biblioteca e ferramentas para se gerar relatórios, mais devido ao fato de serem aplicações externas à ferramenta GenJava, foi proposto a utilização da biblioteca itext (itext, 2005) que pode ser facilmente integrada ao código-fonte da ferramenta, de modo que os usuários não necessitem possuir as bibliotecas e ferramentas instaladas em suas máquinas, basta apenas rodar o arquivo de execução da aplicação comercial gerada. Foi acrescentado um capítulo (capítulo 5) especial, com ênfase nestas ferramentas e bibliotecas, mesmo não tendo sido utilizadas no projeto. A figura 30 apresenta o template de consulta/relatório, responsável pela parametrização destas operações. FIGURA 30 Template de consulta/relatório. A primeira coluna da tabela (Grid) superior, Field Column, da figura 30 representa os campos contidos na tabela escolhida, no caso a de CLIENTES, recuperados através da instrução SQL apresentada na figura 9 da seção 2.1 do capítulo 2. A segunda coluna, Display Column, representa como os campos serão apresentados ao usuário, podendo ser digitado o nome que mais se enquadra na funcionalidade do campo. Checando a penúltima coluna, Filtro, será adicionada aàtela uma opção de filtragem de dados e por último a coluna Coluna

58 56 indica se o campo aparecerá ao usuário ou não, de acordo com a opção de checagem escolhida. A segunda tabela (Grid) se assemelha ao funcionamento da configuração das chaves estrangeiras do template de cadastro, figura 27, diferenciando-se apenas pelas três últimas colunas, Display Column, Filtro, Coluna que segue o funcionamento apresentado no parágrafo anterior. O resultado depois de configurado este template segue na figura 31. FIGURA 31 Consulta/Relatório da aplicação gerada. A figura 31 demonstra a tela de consulta/relatório gerada pelo template respectivo, percebe-se que no canto esquerdo superior da tela, existe uma série de opções de filtragem configurados no template, de modo que ao escolher uma opção, digitar um valor no campo do lado direito e selecionar o botão Pesquisar, os dados serão recuperados do banco de dados seguindo a filtragem estabelecida pelo usuário. Quando há a necessidade de se imprimir os resultados exibidos na tela, é preciso que o usuário selecione o botão Imprimir e determine um caminho para que o relatório seja salvo Visualizador de Relatórios em PDF Para simplificação do manuseio dos PDF s gerados na operação de geração de relatórios, foi implementado um visualizador de PDF com a biblioteca JPedal, possibilitando que os usuários não precisem instalar nenhum software a parte para visualizar seus relatórios.

59 57 Este visualizador pode ser chamado em dois momentos na aplicação gerada, uma no menu inicial da aplicação e outra ao se gerar um relatório, uma vez que nesta segunda opção é chamado automaticamente. Confirmando a mensagem que aparece na tela, ao abrir o relatório, este já é mostrado no visualizador como segue na figura 32. FIGURA 32 Visualizador de relatórios em PDF. 4.7 Template de Movimentação O template de movimentação (figura 33) é responsável por configurar as rotinas de movimentações da aplicação a ser gerada, é necessário que o usuário ao selecionar esta opção na tela de escolha dos templates da aplicação (figura 19 da seção 4.1), leve em consideração as regras apresentadas na seção 4.1. FIGURA 33 Template de movimentação.

60 58 A primeira tabela (Grid) apresentada na figura 33, representa as chaves estrangeiras encontradas na tabela de origem, sendo que sua configuração segue o mesmo principio apresentado na template de cadastro na seção 4.5. A segunda tabela diz respeito às tabelas detalhes que a tabela possui, na existência de mais de uma, pode-se selecionar qual tabela detalhe será utilizada para parametrizar a rotina de movimentação. A última tabela refere-se as chaves estrangeiras encontradas na tabela mestre. A figura 34 mostra a tela de movimentação de vendas após ser gerada pela ferramenta. FIGURA 34 Movimentação da aplicação gerada.

Capítulo 1. Acesso a Banco de Dados com JDBC (Java Database Connectivity) e o Padrão de Projeto DAO (Data Access Object)

Capítulo 1. Acesso a Banco de Dados com JDBC (Java Database Connectivity) e o Padrão de Projeto DAO (Data Access Object) Capítulo 1 Acesso a Banco de Dados com JDBC (Java Database Connectivity) e o Padrão de Projeto DAO (Data Access Object) Introdução Os programas desenvolvidos em Java comunicam se com um banco de dados

Leia mais

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. JDBC - Java Database Connectivity A,L,F,M

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. JDBC - Java Database Connectivity A,L,F,M JAVA Marcio de Carvalho Victorino 1 JDBC - Java Database Connectivity 2 1 JDBC conceito JDBC é uma API (Application Program Interface) para acesso a SGBD s (Sistemas Gerenciadores de Banco de Dados) relacionais

Leia mais

Acesso a Bancos de Dados (JDBC) Autor: Cleyton Maciel (clayton.maciel@ifrn.edu.br) Adaptação: Pedro Baesse (pedro.baesse@ifrn.edu.

Acesso a Bancos de Dados (JDBC) Autor: Cleyton Maciel (clayton.maciel@ifrn.edu.br) Adaptação: Pedro Baesse (pedro.baesse@ifrn.edu. Acesso a Bancos de Dados (JDBC) Autor: Cleyton Maciel (clayton.maciel@ifrn.edu.br) Adaptação: Pedro Baesse (pedro.baesse@ifrn.edu.br) JDBC Conceito Tipos Transações Tipos SQL e JAVA Conexão JDBC Implementação

Leia mais

Acessando dados em Java com JDBC

Acessando dados em Java com JDBC Acessando dados em Java com JDBC Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br Objetivo do curso O que é JDBC? Arquitetura da API Detalhes e uso da API O que é JDBC? Diferentes

Leia mais

Programação com Acesso a Banco de Dados

Programação com Acesso a Banco de Dados Campus Ipanguaçu Curso: Técnico em Informática Programação com Acesso a Banco de Dados AULA 17 ACESSO A BANCO DE DADOS COM JDBC PROF.: CLAYTON M. COSTA 2 011.2 Introdução Aplicação + Banco de Dados: Funcionalidade

Leia mais

Banco de Dados. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com

Banco de Dados. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Banco de Dados Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Roteiro Mapeamento de objetos para modelo relacional Estratégias de persistência Persistência JDBC Mapeando Objetos para o Modelo Relacional

Leia mais

(UFF) JDBC (I) TEPIS II

(UFF) JDBC (I) TEPIS II Aula 20: JDBC (I) Diego Passos Universidade Federal Fluminense Técnicas de Projeto e Implementação de Sistemas II Diego Passos (UFF) JDBC (I) TEPIS II 1 / 33 JDBC: Introdução Especificação que provê acesso

Leia mais

Acesso a Bancos de Dados em Java (JDBC)

Acesso a Bancos de Dados em Java (JDBC) Acesso a Bancos de Dados em Java (JDBC) Jomi Fred Hübner Universidade Regional de Blumenau Departamento de Sistemas e Computação Roteiro Introdução Objetivo da JDBC Vantagens Visão geral do acesso a SGBDs

Leia mais

Aula 1 Acesso a Banco de Dados

Aula 1 Acesso a Banco de Dados Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados Prof. Josenildo Silva jcsilva@ifma.edu.br Introdução O JDBC (Java Database Connectivity) foi criado com o intuito de fornecer aos programadores

Leia mais

JDBC Acessando Banco de Dados

JDBC Acessando Banco de Dados Acessando Banco de Dados Objetivos Entender o que são Drivers. Diferenciar ODBC, JDBC e DRIVERMANAGER. Desenvolver uma aplicação Java para conexão com Banco de Dados. Criar um objeto a partir da classe

Leia mais

Acesso a Bancos de Dados (JDBC) Desenvolvimento de Aplicações em Java O QUE É JDBC JAVA E JDBC CARACTERÍSTICAS DE JDBC

Acesso a Bancos de Dados (JDBC) Desenvolvimento de Aplicações em Java O QUE É JDBC JAVA E JDBC CARACTERÍSTICAS DE JDBC Desenvolvimento de Aplicações em Java José Maria Monteiro www.lia.ufc.br/~zemaria monteiro@unifor.br zemaria@lia.ufc.br O QUE É JDBC Conjunto de classes e interfaces (API) escritas em Java que faz o envio

Leia mais

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas Linguagem de Programação JAVA Professora Michelle Nery Nomeclaturas Conteúdo Programático Nomeclaturas JDK JRE JEE JSE JME JVM Toolkits Swing AWT/SWT JDBC EJB JNI JSP Conteúdo Programático Nomenclatures

Leia mais

JPA: Persistência padronizada em Java

JPA: Persistência padronizada em Java JPA: Persistência padronizada em Java FLÁVIO HENRIQUE CURTE Bacharel em Engenharia de Computação flaviocurte.java@gmail.com Programação Orientada a Objetos X Banco de Dados Relacionais = Paradigmas diferentes

Leia mais

JDBC Java Database Connectivity

JDBC Java Database Connectivity 5 JDBC Java Database Connectivity Prof. Autor: Daniel Morais dos Reis e-tec Brasil Programação Avançada Para Web Página1 Meta Trabalhar com bancos de dados em aplicações web em JSP através das classes

Leia mais

Java 2 Standard Edition Fundamentos de

Java 2 Standard Edition Fundamentos de Java 2 Standard Edition Fundamentos de Helder da Rocha www.argonavis.com.br 1 JDBC JDBC é uma interface baseada em Java para acesso a bancos de dados através de SQL. Pacote Java padrão: java.sql Baseada

Leia mais

Banco de Dados. Banco de Dados. Alcides Pamplona alcides.pamplona@gmail.com. Alcides Pamplona Linguagem de Programação CESBD 2010

Banco de Dados. Banco de Dados. Alcides Pamplona alcides.pamplona@gmail.com. Alcides Pamplona Linguagem de Programação CESBD 2010 Alcides Pamplona Linguagem de Programação CESBD 2010 Alcides Pamplona alcides.pamplona@gmail.com Tópicos API JDBC Utilizando JDBC Statement PreparedStatement Mapeamento Objeto-Relacional 2 API JDBC 3 API

Leia mais

Programação com Acesso a BD. Programação com OO Acesso em Java

Programação com Acesso a BD. Programação com OO Acesso em Java Programação com OO Acesso em Java a BD Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento Clayton Maciel de Informática

Leia mais

Introdução a Informática. Prof.: Roberto Franciscatto

Introdução a Informática. Prof.: Roberto Franciscatto Introdução a Informática Prof.: Roberto Franciscatto 6.1 ARQUIVOS E REGISTROS De um modo geral os dados estão organizados em arquivos. Define-se arquivo como um conjunto de informações referentes aos elementos

Leia mais

Persistência de Classes em Tabelas de Banco de Dados

Persistência de Classes em Tabelas de Banco de Dados UTFPR DAELN - Disciplina de Fundamentos de Programação II ( IF62C ). 1 Persistência de Classes em Tabelas de Banco de Dados 1) Introdução! Em algumas situações, pode ser necessário preservar os objetos

Leia mais

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados Prof. Josenildo Silva jcsilva@ifma.edu.br Introdução O JDBC (Java Database Connectivity) foi criado com o intuito de fornecer aos programadores

Leia mais

Programação Orientada a Objetos JDBC Java Database Connectivity

Programação Orientada a Objetos JDBC Java Database Connectivity Especialização em Engenharia de Software Programação Orientada a Objetos JDBC Java Database Connectivity Sérgio Soares scbs@cin.ufpe.br Objetivos Apresentar os conceitos básicos da especificação de Java

Leia mais

DSS 08/09. Camada de Dados - JDBC. Aula 1. António Nestor Ribeiro /António Ramires Fernandes/ José Creissac Campos {anr,arf,jfc}@di.uminho.

DSS 08/09. Camada de Dados - JDBC. Aula 1. António Nestor Ribeiro /António Ramires Fernandes/ José Creissac Campos {anr,arf,jfc}@di.uminho. Universidade do Minho Departamento de Informática Camada de Dados - JDBC Aula 1 António Nestor Ribeiro /António Ramires Fernandes/ José Creissac Campos {anr,arf,jfc}@di.uminho.pt 2 Camada de Dados A camada

Leia mais

Integrando Java com Banco de Dados

Integrando Java com Banco de Dados Especialização em Engenharia de Software Programação Orientada a Objetos JDBC Java Database Connectivity Sérgio Soares scbs@cin.ufpe.br Objetivos Apresentar os conceitos básicos da especificação de Java

Leia mais

3. PARADIGMA ORIENTADO A OBJETOS

3. PARADIGMA ORIENTADO A OBJETOS Paradigmas de Linguagens I 1 3. PARADIGMA ORIENTADO A OBJETOS Este paradigma é o que mais reflete os problemas atuais. Linguagens orientada a objetos (OO) são projetadas para implementar diretamente a

Leia mais

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Linguagem de Definição de Dados Banco de Dados SQL Structured Query Language Uma das mais importantes linguagens relacionais (se não a mais importante) Exemplos de SGBD que utilizam SQL Oracle Informix

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Introdução ao Paradigma OO

Leia mais

Manipulação de Banco de Dados com Java 1. Objetivos

Manipulação de Banco de Dados com Java 1. Objetivos Manipulação de Banco de Dados com Java 1. Objetivos Demonstrar os fundamentos básicos para a manipulação de banco de dados com Java; Apresentar a sintaxe de comandos SQL usados em Java. 2. Definições A

Leia mais

Classes de Entidades Persistentes JDB

Classes de Entidades Persistentes JDB Classes de Entidades Persistentes JDB Brasil, Natal-RN, 07 de setembro de 2011 Welbson Siqueira Costa www.jdbframework.com Nota de Retificação: em 11/12/2011 a Listagem 3 desse tutorial sofreu uma pequena

Leia mais

INTRODUÇÃO. No entanto, o que pode ser considerado um produto (resultado) da criação de BDs?

INTRODUÇÃO. No entanto, o que pode ser considerado um produto (resultado) da criação de BDs? BANCO DE DADOS Universidade do Estado de Santa Catarina Centro de Ciências Tecnológicas Departamento de Ciência da Computação Prof. Alexandre Veloso de Matos alexandre.matos@udesc.br INTRODUÇÃO Um Banco

Leia mais

Figura 1. A Classe Java

Figura 1. A Classe Java Conexã o com MySQL Connection Factory Para criar as conexões com o banco de dados será utilizado um padrão chamado Factory, onde através dele se terá uma única classe que proverá uma fábrica de conexão

Leia mais

Tecnologia Java. Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br

Tecnologia Java. Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br Tecnologia Java Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br Origem da Tecnologia Java Projeto inicial: Oak (liderado por James Gosling) Lançada em 1995 (Java) Tecnologia

Leia mais

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015 Manipulação de Banco de Dados com Java Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015 Acesso a um SGBD Em sistemas mais simples o uso de arquivos pode ser usado mas para aplicações

Leia mais

GBD. Introdução PROF. ANDREZA S. AREÃO

GBD. Introdução PROF. ANDREZA S. AREÃO GBD Introdução PROF. ANDREZA S. AREÃO Sistema de arquivos X Sistemas de Banco de Dados Sistema de arquivos Sistema de Banco de Dados Aplicativos Dados (arquivos) Aplicativos SGBD Dados (arquivos) O acesso/gerenciamento

Leia mais

Orientação a Objetos com Java

Orientação a Objetos com Java Orientação a Objetos com Java Julio Cesar Nardi julionardi@yahoo.com.br 2011/2 Aula 01: Começando com Java Objetivos: Compreender o que é Java, OO e suas vantagens; Entender os procedimentos para criação

Leia mais

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 1. Conceitos de Orientação a Objetos Introdução O paradigma da POO Classes

Leia mais

Java & Bancos de Dados Adaptado de Slides da Universidade Salgado de Oliveira Goiânia

Java & Bancos de Dados Adaptado de Slides da Universidade Salgado de Oliveira Goiânia Java & Bancos de Dados Adaptado de Slides da Universidade Salgado de Oliveira Goiânia Sistemas de Informação Ling.Prog.V Prof. Roberto Couto Lima Fonte: Curso Java Prof. Fabricio Leonard Leopoldino (Universo)

Leia mais

Prof. M.Sc. Fábio Procópio Prof. M.Sc. João Maria Criação: Outubro/2010

Prof. M.Sc. Fábio Procópio Prof. M.Sc. João Maria Criação: Outubro/2010 Prof. M.Sc. Fábio Procópio Prof. M.Sc. João Maria Criação: Outubro/2010 Uma coleção organizada de dados; Um banco de dados é usualmente mantido e acessado por meio de um software conhecido como Sistema

Leia mais

MOR: Uma Ferramenta para o Mapeamento Objeto-Relacional em Java

MOR: Uma Ferramenta para o Mapeamento Objeto-Relacional em Java MOR: Uma Ferramenta para o Mapeamento Objeto-Relacional em Java Leonardo Gresta Paulino Murta Gustavo Olanda Veronese Cláudia Maria Lima Werner {murta, veronese, werner}@cos.ufrj.br COPPE/UFRJ Programa

Leia mais

FBV - Linguagem de Programação II. Um pouco sobre Java

FBV - Linguagem de Programação II. Um pouco sobre Java FBV - Linguagem de Programação II Um pouco sobre Java História 1992: um grupo de engenheiros da Sun Microsystems desenvolve uma linguagem para pequenos dispositivos, batizada de Oak Desenvolvida com base

Leia mais

JDBC. Prof. Márcio Bueno (poonoite@marciobueno.com)

JDBC. Prof. Márcio Bueno (poonoite@marciobueno.com) JDBC Prof. Márcio Bueno (poonoite@marciobueno.com) JBDC Java Database Connectivity ou JDBC é um conjunto de classes e interfaces (API) escritas em Java que faz o envio de instruções SQL para qualquer banco

Leia mais

DSS 09/10. DSS 09/10 Que métodos é que fazem parte de cada camada? Aplicações Multi-camada JDBC. Aula 3 DSS 09/10

DSS 09/10. DSS 09/10 Que métodos é que fazem parte de cada camada? Aplicações Multi-camada JDBC. Aula 3 DSS 09/10 Universidade do Minho Departamento de Informática Aplicações Multi-camada JDBC Aula 3 António Nestor Ribeiro /António Ramires Fernandes/ José Creissac Campos {anr,arf,jose.campos@di.uminho.pt 2 Programação

Leia mais

Construção de uma ferramenta para preenchimento de uma base de dados RAFAEL MUNDIM SILVA

Construção de uma ferramenta para preenchimento de uma base de dados RAFAEL MUNDIM SILVA Construção de uma ferramenta para preenchimento de uma base de dados RAFAEL MUNDIM SILVA Uberlândia-MG, Dezembro/2000 Construção de uma ferramenta para preenchimento de uma base de dados RAFAEL MUNDIM

Leia mais

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP 1) Introdução Programação Orientada a Objetos é um paradigma de programação bastante antigo. Entretanto somente nos últimos anos foi aceito realmente

Leia mais

Structure Query Language SQL Guilherme Pontes lf.pontes.sites.uol.com.br

Structure Query Language SQL Guilherme Pontes lf.pontes.sites.uol.com.br 1. Abordagem geral Structure Query Language SQL Guilherme Pontes lf.pontes.sites.uol.com.br Em primeiro plano, deve-se escolher com qual banco de dados iremos trabalhar. Cada banco possui suas vantagens,

Leia mais

Orientação a Objetos em Java. Leonardo Gresta Paulino Murta leomurta@ic.uff.br

Orientação a Objetos em Java. Leonardo Gresta Paulino Murta leomurta@ic.uff.br Orientação a Objetos em Java Leonardo Gresta Paulino Murta leomurta@ic.uff.br Agenda Introdução; Orientação a Objetos; Orientação a Objetos em Java; Leonardo Murta Orientação a Objetos em Java 2 Agosto/2007

Leia mais

Desenvolvendo Aplicações Web com NetBeans

Desenvolvendo Aplicações Web com NetBeans Desenvolvendo Aplicações Web com NetBeans Aula 3 Cap. 4 Trabalhando com Banco de Dados Prof.: Marcelo Ferreira Ortega Introdução O trabalho com banco de dados utilizando o NetBeans se desenvolveu ao longo

Leia mais

Acessando bancos de dados com o JDBC

Acessando bancos de dados com o JDBC Acessando bancos de dados com o JDBC Notas de Aula: Java Como Programar, 8/E Prof. Geraldo Braz Junior Introdução Um banco de dados é uma coleção organizada de dados. Um sistema de gerenciamento de bancos

Leia mais

Algumas propriedades dos objetos:

Algumas propriedades dos objetos: Orientação a Objetos Vivemos num mundo de objetos. Esses objetos existem na natureza, nas entidades feitas pelo homem, nos negócios e nos produtos que usamos. Eles podem ser categorizados, descritos, organizados,

Leia mais

Programação de Computadores II: Java. / NT Editora. -- Brasília: 2014. 82p. : il. ; 21,0 X 29,7 cm.

Programação de Computadores II: Java. / NT Editora. -- Brasília: 2014. 82p. : il. ; 21,0 X 29,7 cm. Autor José Jesse Gonçalves Graduado em Licenciatura em Matemática pela Universidade Estadual de São Paulo - UNESP, de Presidente Prudente (1995), com especialização em Análise de Sistemas (1999) e mestrado

Leia mais

Curso de Java. Acesso a banco de dados através de JDBC. Todos os direitos reservados Klais

Curso de Java. Acesso a banco de dados através de JDBC. Todos os direitos reservados Klais Curso de Java Acesso a banco de dados através de JDBC Todos os direitos reservados Klais Java e SGBD s SQL é a linguagem padrão para acesso a banco de dados e se estabeleceu como tal no mercado. SQL no

Leia mais

JDBC (Fundamentos) Sang Shin Java Technology Architect Sun Microsystems, Inc. sang.shin@sun.com www.javapassion.com

JDBC (Fundamentos) Sang Shin Java Technology Architect Sun Microsystems, Inc. sang.shin@sun.com www.javapassion.com JDBC (Fundamentos) Sang Shin Java Technology Architect Sun Microsystems, Inc. sang.shin@sun.com www.javapassion.com 1 Agenda O que é JDBC? Passo a passo do uso da API JDBC DataSource & pool de Conexões

Leia mais

Banco de Dados. Professor: Rômulo César. romulodandrade@gmail.com www.romulocesar.com.br

Banco de Dados. Professor: Rômulo César. romulodandrade@gmail.com www.romulocesar.com.br Banco de Dados Professor: Rômulo César romulodandrade@gmail.com www.romulocesar.com.br Sistema de arquivos X Sistemas de Banco de Dados Sistema de arquivos Sistema de Banco de Dados Aplicativos Dados (arquivos)

Leia mais

Desenvolvimento Web TCC-00.226 Turma A-1

Desenvolvimento Web TCC-00.226 Turma A-1 Desenvolvimento Web TCC-00.226 Turma A-1 Conteúdo Java Database Connectivity (JDBC) Professor Leandro Augusto Frata Fernandes laffernandes@ic.uff.br Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2013.2/tcc-00.226

Leia mais

Java e Conexão com Banco de Dados

Java e Conexão com Banco de Dados A Plataforma Java Programação Orientada a Objetos em Java Java e Conexão com Banco de Dados Prof. Giuliano Prado de Morais Giglio, M.Sc. Conexão com Banco de Dados JDBC: Java Database Connectivity Acesso

Leia mais

UML Unified Modeling Language

UML Unified Modeling Language UML Unified Modeling Language Linguagem de Modelagem Unificada A linguagem UML UML (Unified Modeling Language) Linguagem de Modelagem Unificada É uma linguagem para especificação, É uma linguagem para

Leia mais

EMENTA DO CURSO. Tópicos:

EMENTA DO CURSO. Tópicos: EMENTA DO CURSO O Curso Preparatório para a Certificação Oracle Certified Professional, Java SE 6 Programmer (Java Básico) será dividido em 2 módulos e deverá ter os seguintes objetivos e conter os seguintes

Leia mais

FERRAMENTAS NECESSÁRIAS PARA O DESENVOLVIMENTO EM C#

FERRAMENTAS NECESSÁRIAS PARA O DESENVOLVIMENTO EM C# FERRAMENTAS NECESSÁRIAS PARA O DESENVOLVIMENTO EM C# Camila Sanches Navarro 1,2, Willian Magalhães 2 ¹Universidade paranaense (Unipar) Paranavaí PR Brasil sanchesnavarro@gmail.com wmagalhaes@unipar.br

Leia mais

Prof. Omero, pág. 63. Banco de Dados InterBase.

Prof. Omero, pág. 63. Banco de Dados InterBase. Prof. Omero, pág. 63 O que é o InterBase? O InterBase é um SGBDR - Sistema Gerenciador de Banco de Dados Cliente/Servidor Relacional 1 que está baseado no padrão SQL ANSI-9, de alta performance, independente

Leia mais

DESENVOLVENDO SOLUÇÕES COM VISUAL FOXPRO 8 E 9

DESENVOLVENDO SOLUÇÕES COM VISUAL FOXPRO 8 E 9 DESENVOLVENDO SOLUÇÕES COM VISUAL FOXPRO 8 E 9 Í N D I C E Capítulo 1 - O Início de Tudo 1 Reunindo todas as informações necessárias 2 Instalando o Visual FoxPro 2 Configurando o Visual FoxPro 7 Capítulo

Leia mais

Programando em C# Orientado a Objetos. By: Maromo

Programando em C# Orientado a Objetos. By: Maromo Programando em C# Orientado a Objetos By: Maromo Agenda Módulo 1 Plataforma.Net. Linguagem de Programação C#. Tipos primitivos, comandos de controle. Exercícios de Fixação. Introdução O modelo de programação

Leia mais

CURSO DESENVOLVEDOR JAVA Edição Intensiva de Férias

CURSO DESENVOLVEDOR JAVA Edição Intensiva de Férias CURSO DESENVOLVEDOR JAVA Edição Intensiva de Férias O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma Orientado a Objetos

Leia mais

Módulo 5 - JDBC java.sql - Conexão com Banco de Dados

Módulo 5 - JDBC java.sql - Conexão com Banco de Dados Aplicações de Linguagem de Programação Orientada a Objetos 2ºsem/2012 (Professor: Tiago) Módulo 5 - JDBC java.sql - Conexão com Banco de Dados Fazer o download do drive de conexão com o BD: http://jdbc.postgresql.org/download.html

Leia mais

JAVA JDBC COMO FUNCIONA. Programação Orientada a Objetos Flávio de Oliveira Silva 315. Programação Orientada a Objetos Flávio de Oliveira Silva 316

JAVA JDBC COMO FUNCIONA. Programação Orientada a Objetos Flávio de Oliveira Silva 315. Programação Orientada a Objetos Flávio de Oliveira Silva 316 JAVA JDBC JDBC JAVA DATABASE CONNECTIVITY Permite o acesso a banco de dados Uma das formas de acesso é utilizando o driver JDBC-ODBC que permite a conexão através de um DRIVER OBDC O ODBC (Open Database

Leia mais

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de

Leia mais

Prof. Esp. Adriano Carvalho

Prof. Esp. Adriano Carvalho Prof. Esp. Adriano Carvalho Um arquivo contendo uma sequência de comandos em uma linguagem de programação especifica Esses comandosrespeitam regras de como serem escritos e quais são as palavras que podem

Leia mais

CURSO DESENVOLVEDOR JAVA Edição 2009

CURSO DESENVOLVEDOR JAVA Edição 2009 CURSO DESENVOLVEDOR JAVA Edição 2009 O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma Orientado a Objetos e com o uso

Leia mais

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO.

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO. Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO. Robson Adão Fagundes http://robsonfagundes.blogspot.com/ Mini curso Desenvolvimento de aplicação

Leia mais

Android e Bancos de Dados

Android e Bancos de Dados (Usando o SQLite) Programação de Dispositivos Móveis Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do

Leia mais

Especialização em Engenharia e Administração de Banco de Dados SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS I

Especialização em Engenharia e Administração de Banco de Dados SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS I Especialização em Engenharia e Administração de Banco de Dados SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS I José Alberto F. Rodrigues Filho beto@beto.pro.br Firebird É a primeira geração, descendente do

Leia mais

SQL - Banco de Dados. Disciplina: Banco de Dados. Professor: José Antônio. José Antônio - CEFET-RN 23/09/2015

SQL - Banco de Dados. Disciplina: Banco de Dados. Professor: José Antônio. José Antônio - CEFET-RN 23/09/2015 SQL - Banco de Dados 1 Disciplina: Banco de Dados Professor: José Antônio 2 Tópicos de discussão Criando um banco de dados Incluindo, atualizando e excluindo linhas nas tabelas Pesquisa básica em tabelas

Leia mais

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL 1. O que é Linguagem SQL 2. Instrução CREATE 3. CONSTRAINT 4. ALTER TABLE 5. RENAME TABLE 6. TRUCANTE TABLE 7. DROP TABLE 8. DROP DATABASE 1 1. O que é Linguagem SQL 2. O SQL (Structured Query Language)

Leia mais

Bibliografia. Desenvolvimento Orientado a Objetos. Introdução. Bibliografia. O que você vê?

Bibliografia. Desenvolvimento Orientado a Objetos. Introdução. Bibliografia. O que você vê? Bibliografia Desenvolvimento Orientado a Objetos Prof.: Edson dos Santos Cordeiro LARMAN, Graig. Utilizando UML e padrões. Porto Alegre: Bookman, 2000. STAA, Arndt von. Programação modular. Rio de Janeiro:

Leia mais

Programação SQL. Introdução

Programação SQL. Introdução Introdução Principais estruturas duma Base de Dados: Uma BD relacional é constituída por diversas estruturas (ou objectos ) de informação. Podemos destacar: Database: designa a própria BD; Table/Tabela:

Leia mais

Introdução à Linguagem Java

Introdução à Linguagem Java Introdução à Linguagem Java Histórico: Início da década de 90. Pequeno grupo de projetos da Sun Microsystems, denominado Green. Criar uma nova geração de computadores portáveis, capazes de se comunicar

Leia mais

FERRAMENTAS PARA DESENVOLVIMENTO EM C#

FERRAMENTAS PARA DESENVOLVIMENTO EM C# FERRAMENTAS PARA DESENVOLVIMENTO EM C# Camila Sanches Navarro 1,2, Wyllian Fressatti 2 ¹Universidade paranaense (Unipar) Paranavaí PR Brasil sanchesnavarro@gmail.com wyllian@unipar.br Resumo. Este artigo

Leia mais

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional Juarez Bachmann Orientador: Alexander Roberto Valdameri Roteiro Introdução Objetivos Fundamentação teórica Desenvolvimento

Leia mais

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS João Gabriel Ganem Barbosa Sumário Motivação História Linha do Tempo Divisão Conceitos Paradigmas Geração Tipos de Dados Operadores Estruturada vs

Leia mais

1. Apresentação. 1.1. Objetivos

1. Apresentação. 1.1. Objetivos 1.1. Objetivos 1. Apresentação Neste capítulo estão descritos os objetivos gerais do livro, os requisitos desejáveis do estudante para que possa utilizá-lo eficientemente, e os recursos necessários em

Leia mais

Ambientes Visuais. Ambientes Visuais

Ambientes Visuais. Ambientes Visuais Ambientes Visuais Inicialmente, apenas especialistas utilizavam os computadores, sendo que os primeiros desenvolvidos ocupavam grandes áreas e tinham um poder de processamento reduzido. Porém, a contínua

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 10 Persistência de Dados

Leia mais

Noções de. Microsoft SQL Server. Microsoft SQL Server

Noções de. Microsoft SQL Server. Microsoft SQL Server Noções de 1 Considerações Iniciais Basicamente existem dois tipos de usuários do SQL Server: Implementadores Administradores 2 1 Implementadores Utilizam o SQL Server para criar e alterar base de dados

Leia mais

BANCO DE DADOS II. AULA MySQL.

BANCO DE DADOS II. AULA MySQL. UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II BANCO DE DADOS II AULA MySQL. DISCIPLINA: Banco de Dados II PROF.: ROMULO VANZIN Data: 27/06/2014 Banco

Leia mais

Modelagemde Software Orientadaa Objetos com UML

Modelagemde Software Orientadaa Objetos com UML Modelagemde Software Orientadaa Objetos com UML André Maués Brabo Pereira Departamento de Engenharia Civil Universidade Federal Fluminense Colaborando para a disciplina CIV 2802 Sistemas Gráficos para

Leia mais

SUMÁRIO CAPÍTULO 1 INTRODUÇÃO AO JAVA... 1

SUMÁRIO CAPÍTULO 1 INTRODUÇÃO AO JAVA... 1 SUMÁRIO CAPÍTULO 1 INTRODUÇÃO AO JAVA... 1 A Origem... 2 O Caminho Para a Aprendizagem... 4 Java Como Plataforma... 6 Finalidade... 9 Características... 11 Perspectivas... 13 Exercícios... 14 CAPÍTULO

Leia mais

UTILIZANDO ICONIX NO DESENVOLVIMENTO DE APLICAÇÕES DELPHI

UTILIZANDO ICONIX NO DESENVOLVIMENTO DE APLICAÇÕES DELPHI UTILIZANDO ICONIX NO DESENVOLVIMENTO DE APLICAÇÕES DELPHI Dr. George SILVA; Dr. Gilbert SILVA; Gabriel GUIMARÃES; Rodrigo MEDEIROS; Tiago ROSSINI; Centro Federal de Educação Tecnológica do Rio Grande do

Leia mais

Java JDBC Aplicação Java com Acesso a um SGBD. Ricardo Terra (rterrabh [at] gmail.com) Java JDBC Maio, 2010

Java JDBC Aplicação Java com Acesso a um SGBD. Ricardo Terra (rterrabh [at] gmail.com) Java JDBC Maio, 2010 Java JDBC Aplicação Java com Acesso a um SGBD Ricardo Terra rterrabh [at] gmail.com Ricardo Terra (rterrabh [at] gmail.com) Java JDBC Maio, 2010 1 CV Nome: Ricardo Terra Email: rterrabh [at] gmail.com

Leia mais

CURSO DE PROGRAMAÇÃO EM JAVA

CURSO DE PROGRAMAÇÃO EM JAVA CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro

Leia mais

Conectando Bancos de Dados Microsoft Access no BrOffice.org Base. fornecido pelo Projeto de Documentação do BrOffice.org

Conectando Bancos de Dados Microsoft Access no BrOffice.org Base. fornecido pelo Projeto de Documentação do BrOffice.org Conectando Bancos de Dados Microsoft Access no BrOffice.org Base fornecido pelo Projeto de Documentação do BrOffice.org Índice 1 Introdução...2 1.1 Versão... 2 1.2 Licenciamento...2 1.3 Mensagem do Projeto

Leia mais

INTRODUÇÃO BANCO DE DADOS. Prof. Msc. Hélio Esperidião

INTRODUÇÃO BANCO DE DADOS. Prof. Msc. Hélio Esperidião INTRODUÇÃO BANCO DE DADOS Prof. Msc. Hélio Esperidião BANCO DE DADOS Podemos entender por banco de dados qualquer sistema que reúna e mantenha organizada uma série de informações relacionadas a um determinado

Leia mais

INDICE 3.APLICAÇÕES QUE PODEM SER DESENVOLVIDAS COM O USO DO SAXES

INDICE 3.APLICAÇÕES QUE PODEM SER DESENVOLVIDAS COM O USO DO SAXES w w w. i d e a l o g i c. c o m. b r INDICE 1.APRESENTAÇÃO 2.ESPECIFICAÇÃO DOS RECURSOS DO SOFTWARE SAXES 2.1. Funcionalidades comuns a outras ferramentas similares 2.2. Funcionalidades próprias do software

Leia mais

Framework utilizando reflexão e aspectos para persistência de objetos em java

Framework utilizando reflexão e aspectos para persistência de objetos em java Framework utilizando reflexão e aspectos para persistência de objetos em java Antonio Carlos Rolloff (UNIPAR) acrolloff@gmail.com Arthur Cattaneo Zavadski (UNIPAR) arthur@datacoper.com.br Maria Aparecida

Leia mais

Centro de Computação - Unicamp Gerência de Atendimento ao Cliente (e-mail:apoio@turing.unicamp.br) Sumário

Centro de Computação - Unicamp Gerência de Atendimento ao Cliente (e-mail:apoio@turing.unicamp.br) Sumário Sumário Conceitos Microsoft Access 97... 01 Inicialização do Access... 02 Convertendo um Banco de Dados... 03 Criando uma Tabela... 06 Estrutura da Tabela... 07 Propriedades do Campo... 08 Chave Primária...

Leia mais

Figura 1 - Arquitetura multi-camadas do SIE

Figura 1 - Arquitetura multi-camadas do SIE Um estudo sobre os aspectos de desenvolvimento e distribuição do SIE Fernando Pires Barbosa¹, Equipe Técnica do SIE¹ ¹Centro de Processamento de Dados, Universidade Federal de Santa Maria fernando.barbosa@cpd.ufsm.br

Leia mais

Introdução ao Delphi. Introdução. Edições do Software. Capítulo 1. InforBRás - Informática Brasileira Ltda. O Que é o Delphi.

Introdução ao Delphi. Introdução. Edições do Software. Capítulo 1. InforBRás - Informática Brasileira Ltda. O Que é o Delphi. Capítulo 1 O Que é o Delphi Diferenças entre Delphi Client/Server do Delphi for Windows Características que compõem o Integrated Development Invironment (IDE) Como o Delphi se encaixa na família Borland

Leia mais

OOP - Java. Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora

OOP - Java. Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1 Sumário Java Aviso! História do Java Programação Orientada à Objetos Os quatro pilares da OOP Abstração

Leia mais

JDBC. Java DataBase Connectivity

JDBC. Java DataBase Connectivity JDBC Java DataBase Connectivity JDBC??? Uma API que permite o acesso a virtualmente qualquer fonte de dado tabular a partir de um programa escrito em Java O que é uma uma fonte de dados tabular? acesso

Leia mais

1ª QUESTÃO Linguagem C Vantagens: Desvantagens: Linguagem C++ Vantagens: Desvantagens:

1ª QUESTÃO Linguagem C Vantagens: Desvantagens: Linguagem C++ Vantagens: Desvantagens: 1ª QUESTÃO Linguagem C Vantagens: É uma linguagem simples que nos permite trabalhar com funções matemáticas, ficheiros, entre outras sendo necessário para tal a inclusão de bibliotecas padrão as quais

Leia mais

Nesta atividade de laboratório você irá criar aplicações Java que acessam bancos de dados.

Nesta atividade de laboratório você irá criar aplicações Java que acessam bancos de dados. Atividade de Laboratório - JDBC Nesta atividade de laboratório você irá criar aplicações Java que acessam bancos de dados. A Base de Dados de Exemplo Nos exemplos que serão apresentados será usado um esquema

Leia mais

Desenvolvimento de Aplicações. Desenvolvimento de Aplicações. Desenvolvimento de Aplicações. Dificuldades no uso de Bancos de Dados

Desenvolvimento de Aplicações. Desenvolvimento de Aplicações. Desenvolvimento de Aplicações. Dificuldades no uso de Bancos de Dados Desenvolvimento de Aplicações Desenvolvimento de Aplicações Dificuldades no uso de Bancos de Dados Um leigo não sabe o que é e como funciona um BD Mesmo um profissional da área de informática pode ter

Leia mais