BDs Distribuídos

Propaganda
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 dificuldades em utilizar BDs
§ Difícil escrever consultas em SQL
§ Saída dos dados não está na forma desejada
§ Erros na elaboração das consultas e na interpretação
dos resultados podem ser altamente prejudiciais
Desenvolvimento de Aplicações
§ JDBC
§ Java EE
§ JDO
§ Integração de Sistemas
§ Diversos sistemas podem precisar dos dados do BD,
preferencialmente sem intervenção humana
165
166
Desenvolvimento de Aplicações
JDBC
§ Aplicações podem acessar BDs utilizando:
§ JDBC permite que aplicações Java acessem
bases de dados
§ Interfaces de programação de aplicações (APIs
(APIs))
§ JDBC (Java DataBase Connectivity)
§ ODBC (Open DataBase Connectivity)
§ Plataformas de desenvolvimento de aplicações
integradas a bancos de dados
§ Java Enterprise Edition + Conectores Java
§ Microsoft .NET + ADO.NET
§ Camadas/frameworks/APIs de persistência
§ JDO (Java Data Objects) e suas implementações
§ Hibernate
§ É necessário utilizar um driver
§ O driver deve ser fornecido pelo fabricante do SGBD
§ Acessar uma base de dados implica em:
§ Estabelecer uma conexão com a base de dados
§ Executar comandos SQL
§ Processar os resultados obtidos
167
JDBC
168
JDBC
§ Drivers JDBC
Aplicação Java
§ JDBCJDBC-ODBC Bridge
§ É uma ponte do driver ODBC para JDBC
§ Implementado pela classe JdbcOdbcDriver
§ Permite que a aplicação Java veja o driver ODBC
como um driver JDBC
§ JDBC – Native Bridge
§ Converte as chamadas JDBC da aplicação para
chamadas de um driver nativo já instalado na
máquina
§ O driver nativo se comunica com a base de dados
através de um protocolo proprietário
JDBC API
Driver JDBC
p/ Oracle
Driver JDBC
p/ ODBC
Driver JDBC
p/ MySQL
Oracle
SQL Server
MySQL
169
170
JDBC
JDBC
§ Drivers JDBC (cont.)
§ Para acessar a base de dados é preciso:
§ JDBC – Net Bridge
§ Componente Java que converte chamadas JDBC
para um protocolo de rede
§ A aplicação se comunica com um servidor
intermediário que gerencia qualquer conexão
solicitada à base de dados
§ All Java JDBC Driver
§ Escrito 100% em Java
§ Opera em qualquer plataforma com uma JVM
171
§ Carregar o driver JDBC:
§ Instanciar um objeto da classe java.
java.sql.
sql.Driver:
Driver:
Class.
Class.forName(
forName(driver_path);
§ Forma alternativa:
java –Djdbc.
Djdbc.drivers=driver_path application
§ Instanciar um objeto da classe java.
java.sql.
sql.Connection:
Connection:
Connection conn =
DriverManager.
DriverManager.getConnection(
getConnection(URL, login, password);
§ URL: localização da base de dados
§ Login:
Login: Nome do usuário da base de dados
§ Password:
Password: senha do usuário da base de dados 172
JDBC
JDBC
§ O envio de comandos SQL para a base de dados
é feita através das classes:
§ O resultados de um comando SQL é recebido
em um ResultSet
§ java.sql.Statement
§ java.
java.sql.
sql.PreparedStatement //pré compilada
§ Métodos das classes Statement
§ execute() à executa um comando qualquer
§ executeQuery(String
executeQuery(String SQL) à executa consulta
§ executeUpdate(String
executeUpdate(String SQL) à efetua alteração
(insert,
insert, update,
update, delete)
delete)
§ É retornado pelo método executeQuery()
executeQuery()::
java.
java.sql.
sql.ResultSet rs =stmt
=stmt..executeQuery(SQL);
executeQuery(SQL);
§ Os resultados são armazenados em uma lista
§ O método next()
next() retorna um valor booleano
indicando se há mais valores na lista
§ Se houver um novo valor, este pode ser lido com um
método rs.get
rs.getTipo (id ), onde Tipo é o tipo
correspondente ao dado lido (ex.: String, Int, etc.) e
id pode ser a posição ou o nome do campo
173
174
Java EE
Java EE
§ Java Platform, Enterprise Edition
§ Java Server Pages (JSP)
§ Adiciona à plataforma Java suporte para:
para:
§ Desenvolvimento de aplicações Web:
§ JSP, Servlets e JSF
§ Desenvolvimento de Serviços Web:
§ JAXJAX-WS, JAXP, JAXB, JAXJAX-RPC, SAAJ, JAXR
§ Componentes de Negócio:
Negócio: EJB
§ Suporte a Transações:
Transações: JTA
§ Interconexão com Sistemas Legados:
Legados: Connectors
§ Outros Mecanismos de Comunicação Remota:
Remota:
§ JMS e JavaMail
175
§ Permite a criação de páginas Web com conteúdo
dinâmico,
dinâmico, gerado por código Java ou por JavaBeans
§ Usa APIs voltadas para a criação de HTML e XML
§ Servlets
§ Aplicações que rodam em servidores Web
§ São persistentes,
persistentes, ao contrário de scripts CGI
§ Recebem requisições pela rede via HTTP ou HTTPS
§ Java Server Faces (JSF)
§ Framework para criação de interfaces Web gráficas
§ Acessível através da API Java e de arquivos de
configuração em XML
176
Java EE
Java EE
§ Suporte a Serviços Web no Java EE
§ Enterprise JavaBeans (EJB)
§ JAXJAX-WS (Java API for XML Web Services): provê
suporte para criação de serviços web e seus clientes
§ JAXP (Java API for XML Processing): realiza o
processamento de dados em XML
§ JAXB (Java API for XML Binding): faz o mapeamento
entredados em XML e objetos Java
§ JAXJAX-RPC (Java API for XML RPC): permite o envio de
chamadas remotas de procedimento a serviços web
§ SAAJ (SOAP with Attachments API for Java): permite
o envio de mensagens SOAP, inclusive com anexos
§ JAXR (Java API for XML Registries): permite o acesso
a registros de serviços em repositórios UDDI e ebXML
§ Componentes que rodam no servidor
§ Acessam os sistemas legados da empresa para
implementar regras de negócio
§ Java Transaction API (JTA)
§ API de suporte a transações
§ Transações são modeladas como objetos Java
§ Java Connectors
§ Usados para integrar os sistemas legados usados nas
empresas na arquitetura J2EE
177
Java EE
178
Java EE
§ Java Message Service (JMS)
§ Camadas do JEE
§ Serviço para comunicação remota através de
mensagens assíncronas (eventos)
eventos)
§ JavaMail
§ API para envio e recepção de ee-mails
§ Útil para aplicações Web
179
Java EE
Java EE
§ Camadas do Java EE
§ Camada Cliente do JEE
§ Camada Cliente
§ Clientes Web: navegador,
navegador, web services, …
§ Aplicações Java
§ Camada Web
§ Páginas JSP, JSF, Servlets e JavaBeans
§ Camada de Negócios
§ Componentes EJB
§ Camada de Sistemas de Informações
Informações Empresariais
Empresariais
§ Integração com BDs e outros sistemas legados
180
© http://java.sun.co m
§ Comporta dois tipos de cliente:
§ Clientes Web (thin) ou Aplicações Java
181
© http://java.sun.com
Java EE Server
182
Java EE
Java EE
§ Servidor Java EE
§ Camadas do Servidor Java EE
§ Possui duas camadas:
§ Camada Web
§ Composta por páginas JSP, JSF, Servlets e
JavaBeans
§ Acessada pelos clientes Web
§ Camada de Negócios
§ Composta por componentes EJB
§ Usada pela camada Web e por aplicações
clientes escritas em Java
© http://java.sun.com
Java EE Server
183
184
Java EE
Java EE
§ Componentes EJB
§ Servidor Java EE
§ Session Beans
§ Executam uma tarefa durante uma sessão de
interação com um deterinado cliente
§ Entity Beans
§ Representam dados armazenados em BDs
§ Persistência pode ser transparente
§ MessageMessage-Driven Beans
§ São consumidores de mensagens JMS
§ Mensagens tratadas ao serem recebidas
§ Fornece ambientes controlados de execução – os
contêiners – para componentes Java EE
§ Contêiner Web:
Web: para Servlets e Páginas JSP/JSF
§ Contêiner EJB: para Enterprise Beans
§ Provê acesso transparente a serviços:
§ Transação: JTA
§ Segurança: JAAS
§ Localização: JNDI
§ etc.
185
186
Java EE
Java EE
§ Servidor Java EE
§ Camada de Sistemas de Informações
Informações
Empresariais
Empresariais (EIS)
§ Usada pelos componentes EJB da camada de negócio
para acesso a software de infrainfra-estrutura
§ Banco de Dados
§ Monitores de Transações
Transações
§ Enterprise Resource Planning (ERP)
§ Customer Relationship Management (CRM)
§ ... e outros sistemas legados
§ Estes sistemas geralmente rodam em mainframes ou
servidores de médio porte
§ Conectores permitem o acesso ao sistema legado
Java EE Server
© http://java.sun.com
187
188
Java EE
JDO
§ Conectores
§ Java Data Objects
§ Integram diversos sistemas à arquitetura Java EE
§ Fornecidos pelo fabricante do sistema legado ou por
terceiros
§ Para desenvolver um conector geralmente é
necessário escrever código nativo para a plataforma
do sistema legado e integrar ao Java usando JNI
(Java Native Interface), CORBA ou sockets
§ Interface padrão para persistência de modelos de
dados de aplicações
§ Com JDO, os dados de uma aplicação podem ser
persistidos transparentemente em um BD
§ Aplicações que usam JDO são independentes do
SGBD utilizado, tornandotornando-se portáveis entre BDs
mesmo que o modelo de dado seja diferente
§ Implementada por vários fabricantes de software
§ Kodo JDO, intelliBO,
intelliBO, OpenFusion JDO,
FastObjects,
FastObjects, etc.
189
190
JDO
JDO
§ Classes JDO Persistentes
§ Gerenciador de Persistência
§ Uma classe, para ser persistente, deve implementar a
interface javax.
javax.jdo.
jdo.spi.
spi.PersistenceCapable
§ Esta interface define os métodos para gerenciar
instâncias da classe que será persistida
§ Os métodos necessários para persistir instâncias da
classe podem ser gerados automaticamente por um
prépré-processador ou gerador de código
Responsável por persistir e recuperar objetos do BD
Implementa a interface javax.
javax.jdo.
jdo.PersistenceManager
Principais métodos:
§ makePersistent()
makePersistent():: persiste um objeto
§ retrieve()
retrieve():: recupera um objeto
§ makePersistentAll()
makePersistentAll():: persiste array ou coleção de
objetos
§ retrieveAll()
retrieveAll():: recupera array ou coleção
§ Criado com o método getPersitenceManager()
getPersitenceManager() de
uma fábrica (javax
(javax..jdo.
jdo.PersistenceManagerFactory)
PersistenceManagerFactory)
191
192
§
§
§
JDO
JDO
§ Consultas
§ Transações
§ Criada usando o método newQuery()
newQuery() do gerenciador
de persistência, que retorna um objeto que
implementa a interface javax.
javax.jdo.
jdo.Query
§ Na criação da consulta deve ser especificada a classe
que será pesquisada, além dos mais diversos critérios
da consulta
§ O método execute() invoca a consulta no BD e
retorna uma coleção de objetos como resultado
§ Não é necessário escrever nenhum código SQL ou em
qualquer outra linguagem de consulta
193
§ Implementam a interface javax.
javax.jdo.
jdo.Transaction
§ Obtida com o método currentTransaction()
currentTransaction() do
gerenciador de persistência
§ Principais métodos:
§ begin()
begin():: inicia a transação
§ commit()
commit():: efetiva a transação
§ rollback()
rollback():: aborta a transação e desfaz qualquer
modificação efetuada nos dados
194
Download