SlideShare uma empresa Scribd logo
1 de 38
Baixar para ler offline
ORM
(Object Relational Mapper)
FACOM | UFMS
ORM (Object Relational Mapper)
• Desenvolvido com o objetivo de flexibilizar o modelo relacional (ainda não havia nosql)
• Técnica de mapeamento objeto relacional que permite fazer uma relação entre a programação orientada a objetos
e o modelo relacional de banco de dados
• Realiza mapeamento e manipulação dos dados
• Existem inúmeros frameworks disponíveis para diversas linguagens de programação
• Exemplos:
• Java – Hibernate
• C# – Entity Framework, Nhibernate
• PHP – RedBeanPHP, Doctrine, Propel, Eloquent (Laravel)
• Python – DjangoORM, SqlAlchemy
• NodeJS – Sequelize
• A representação é feita por meio de classes, métodos e propriedades
• O Framework faz a abstração do SQL
• Possui os métodos de CRUD – (create, read, update and delete)
• Detalhes de conexões e queries/
FACOM | UFMS
Laboratório de Banco de Dados
Banco de dados relacional
Visão Geral
3
Camada
de
mapeamento
ORM
Objetos em memória
Tabelas e restrições
em banco de dados
FACOM | UFMS
ORM (Object Relational Mapper)
• Vantagens
• Independência de SGBD
• Facilidade de migração
• Produtividade e redução de código
• Cache de dados
• Segurança (sql injection por exemplo)
• Arquitetura de software bem definida (necessário uma camada de integração com o
banco de dados)
• Desvantagens
• Modelos mais complexos de entidades e relacionamentos podem causar dificuldades no
mapeamento para ORM. Assim, o ORM pode não tratar corretamente
• Necessário ter um bom conhecimento do funcionamento interno do ORM
• Em alguns casos, é necessário utilizar queries diretamente
• Aprender a utilizar um ORM pode ser mais complicado do que utilizar o SQL. Ainda mais
se você trabalhar com ORMs diferentes para linguagens de programações diferentes
Programação
integrada com
banco de dados
É possível fazer conexões com
banco de dados direta ou por
meio de ORMs
• Python
• Direta (procedimental / OO)
• Java
• Direta (JDBC)
• ORM (hibernate)
Banco de Dados
com python e
PostgreSQL
7
Laboratório de Banco de Dados
Programas
Input
Output
SGBD
SQL
Arquivos de
banco de
dados
Visão Geral
Conexão com o SGBD: cada
linguagem possui uma forma de
se comunicar (ODBC)
8
FACOM | UFMS
• Criada pelo holandês Guido Van Rossun em 1991, no instituto de
pesquisa nacional para matemática e ciência da computação de
Amsterdam
• Linguagem de programação de alto nível
• Totalmente OO
• Multiplataforma (Windows, Linux, etc)
• Quem utiliza?
• Google, Yahoo, Nasa, Globo.com, Nokia, IBM, etc
• Tipagem dinâmica
9
FACOM | UFMS
Laboratório de Banco de Dados 10
Tipos de dados
Python Postgresql
int integer, smallint
long bigint
float real, double
Decimal numeric
bool boolean
str text, varchar, char
list array
dict tipos personalizados
None null
FACOM | UFMS
Laboratório de Banco de Dados 11
Iniciando PostgreSQL com Python
PSYCOPG
• Uma das maneiras da linguagem Python reconhecer o banco de dados
PostgreSQL é por meio do adaptador PSYCOPG, que é considerado o
mais utilizado.
Documentação psycopy: http://initd.org/psycopg/docs/index.html
FACOM | UFMS
Laboratório de Banco de Dados
Programas
Input
Output
SGBD
PSYCOPYG
Arquivos de
banco de
dados
Visão Geral
12
FACOM | UFMS
Laboratório de Banco de Dados 13
Abrindo uma conexão
CONNECT
• dbname – the database name (database is a deprecated alias)
• user – user name used to authenticate
• password – password used to authenticate
• host – database host address (defaults to UNIX socket if not provided)
• port – connection port number (defaults to 5432 if not provided)
FACOM | UFMS
Laboratório de Banco de Dados 14
Abrindo um cursor
CURSOR
• Responsável pela instância de persistência (realiza as transações a partir da conexão
do banco de dados corrente)
FACOM | UFMS
Laboratório de Banco de Dados 15
Executando comando SQL
EXECUTE
• Executa o comando SQL
connpsql.py
FACOM | UFMS
Laboratório de Banco de Dados 16
Recuperando os resultados
FETCHONE / FETCHALL / FETCHMANY
• Os métodos a seguir são utilizados para recuperar os dados do banco de dados após
a chamada do comando execute(<sql>)
• FETCHONE():
• retorna uma única tupla (a primeira)
• FETCHALL():
• retorna todas as tuplas de uma consulta
• FETCHMANY(<size=cursor.arraysize]>):
• retorna o número de tuplas informadas no parâmetro.
FACOM | UFMS
Laboratório de Banco de Dados 17
Recuperando os resultados
FETCHALL
• FETCHALL():
• retorna todas as tuplas de uma consulta
FACOM | UFMS
Laboratório de Banco de Dados 18
Recuperando os resultados
FETCHONE
• FETCHONE():
• retorna uma única tupla (a primeira)
FACOM | UFMS
Laboratório de Banco de Dados 19
Recuperando os resultados
FETCHMANY
• FETCHMANY(<size=cursor.arraysize]>):
• retorna o número de tuplas informadas no parâmetro.
FACOM | UFMS 20
Classe de
conexão
ConexaoPSQL.py
FACOM | UFMS 21
Utilizando a classe
connclasspsql.py
Banco de Dados
com python e
Mysql
23
FACOM | UFMS
Laboratório de Banco de Dados 24
Iniciando PostgreSQL com Python
PYMYSQL
• Uma das maneiras da linguagem Python reconhecer o banco de dados
MySQL é por meio do adaptador PYMYSQL
Documentação pymysql: https://pymysql.readthedocs.io/en/latest/
FACOM | UFMS
Laboratório de Banco de Dados
Programas
Input
Output
SGBD
PYMYSQL
Arquivos de
banco de
dados
Visão Geral
25
FACOM | UFMS 26
Iniciando PostgreSQL com Python
PYMYSQL
connmysql.py
Banco de Dados
com Java e
postgreSQL
27
FACOM | UFMS
Laboratório de Banco de Dados
Integração do Java com o banco de dados
28
1. Usando JDBC: uma API (biblioteca de persistência em banco de dados relacionais do
Java) para conexão com o banco de dados denominada Java DataBase Connectivity -
JDBC,
• Consiste em um conjunto de classes e interfaces (API) escritas em Java que fazem o
envio de instruções SQL para qualquer banco de dados relacional.
2. Usando JPA: Java Persistence API, JPA.
• Consiste em padrão da linguagem Java que descreve uma interface comum para
frameworks de persistência de dados.
FACOM | UFMS
Laboratório de Banco de Dados
Integração do Java com o banco de dados
29
• Um ponto que deve ser observado é que as criações,
alterações, inserções, seleções, manipulações em geral
ficam por responsabilidade do programador através de
SQL, ele deve fornecer os comandos que deseja
executar no banco de dados.
• A JDBC é responsável apenas pela conexão com o
banco, envio de instruções e devolução dos dados e não
pela manipulação dos dados em si.
FACOM | UFMS
Programas
Input
Output
SGBD
JDBC
Arquivos de
banco de
dados
Visão Geral
30
Pacote java.sql
FACOM | UFMS
Laboratório de Banco de Dados 31
JDBC - Integração do Java com o banco de dados
1. Conectar-se a um banco de dados qualquer através da API JDBC;
2. Criar uma fábrica de conexões usando o design pattern Factory;
3. Pesquisar dados por meio de queries;
4. Encapsular suas operações com bancos de dados através de DAO - Data
Access Object.
FACOM | UFMS
Laboratório de Banco de Dados 32
JDBC - Integração do Java com o banco de dados
1. Conectar-se a um banco de dados qualquer através da API JDBC;
• A conexão a um banco de dados é feita de modo a evitar que cada banco tenha a
sua própria API e um conjunto de classes e métodos, temos um único conjunto de
interfaces muito bem definidas que devem ser implementadas.
• Esse conjunto de interfaces fica dentro do pacote java.sql e nos referiremos a ele como JDBC.
• Entre as diversas interfaces deste pacote, existe a interface Connection, que define
métodos para executar uma query (como um insert e select), commit de transação,
fechar a conexão, entre outros.
FACOM | UFMS
Laboratório de Banco de Dados 33
JDBC - Integração do Java com o banco de dados
ConnectionMain.class
FACOM | UFMS
Laboratório de Banco de Dados 34
JDBC - Integração do Java com o banco de dados
2. Criar uma fábrica de conexões usando o design Pattern Factory e DAO;
Factory (fábrica)
• Encapsula a instanciação de tipos concretos
DAO (Data Access Object)
• Separa a lógica de negócio da lógica de persistência de dados
• Responsável por trocar informações com o SGBD fornecendo operações de CRUD
Os Design Patterns são uma coleção de padrões de projeto de software que contém soluções
para problemas conhecidos e recorrentes no desenvolvimento de software descrevendo uma
solução comprovada para um problema de projeto recorrente.
FACOM | UFMS 35
JDBC - Integração do Java com o banco de dados
2. Criar uma fábrica de conexões usando o design Pattern Factory
ConnectionFactory.class
FACOM | UFMS 36
JDBC - Integração do Java com o banco de dados
2. Criar uma classe DAO para separa a lógica de persistência
DepartamentoDAO.class
FACOM | UFMS 37
JDBC - Integração do Java com o banco de dados
2. Teste da persistência utilizando JDBC
DepartamentoDAOTest.class
FACOM | UFMS
Laboratório de Banco de Dados 38
JPA - Integração do Java com o banco de dados
• JPA (Java Persistence API) – ferramenta de mapeamento objeto-relacional
(ORM - Object-relational mapping)
• Hibernate ferramento ORM open source que é uma inspiração para o JPA
• Hibernate:
• Abstrai o seu código SQL e a camada JDBC (são gerados em tempo de execução)
• Gera o SQL de acordo com o SGBD, tornando transparente dentro do Java a mudança de um
SGBD para outro
FACOM | UFMS
Laboratório de Banco de Dados 39
JPA - Integração do Java com o banco de dados
• Mapeamento
FACOM | UFMS
Laboratório de Banco de Dados
Links úteis
• Material de programação com python: https://www.py4e.com/book
• https://jdbc.postgresql.org/documentation/80/connect.html
• https://www.caelum.com.br/apostila-java-web/uma-introducao-pratica-
ao-jpa-com-hibernate/
• https://www.jetbrains.com/help/idea/2016.1/creating-persistence-
units.html
40

Mais conteúdo relacionado

Semelhante a 14-programacao-bd-Object Relational Mapper.pdf

Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a Rômulo Jales
 
Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDDPHP Day Curitiba
 
Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Claudio Martins
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Eric Gallardo
 
Palest"Tecnologias para Desenvolvimento Baseado em Componentes"
Palest"Tecnologias para Desenvolvimento Baseado em Componentes"Palest"Tecnologias para Desenvolvimento Baseado em Componentes"
Palest"Tecnologias para Desenvolvimento Baseado em Componentes"sbcars
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com PythonLuiz Aldabalde
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com PythonPythOnRio
 
Sistemas distribuidos java_8
Sistemas distribuidos java_8Sistemas distribuidos java_8
Sistemas distribuidos java_8Luiz Malmonge
 
JavaFX 8, Collections e Lambdas
JavaFX 8, Collections e LambdasJavaFX 8, Collections e Lambdas
JavaFX 8, Collections e LambdasjesuinoPower
 
Banco de Dados em Grafos com Neo4J
Banco de Dados em Grafos com Neo4J  Banco de Dados em Grafos com Neo4J
Banco de Dados em Grafos com Neo4J Daniel San Martin
 
Apresentação palestra ireport
Apresentação palestra ireportApresentação palestra ireport
Apresentação palestra ireportfpsgyn
 
PostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfPostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfArleiEvaristo
 
Minicurso Epoca mongoDB
Minicurso Epoca mongoDBMinicurso Epoca mongoDB
Minicurso Epoca mongoDBLelyBarros
 
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
Introdução FireDACAcesso multi-banco para Delphi e C++ BuilderIntrodução FireDACAcesso multi-banco para Delphi e C++ Builder
Introdução FireDAC Acesso multi-banco para Delphi e C++ BuilderDiego Rosa
 
Simulador Eletromagnético em um Ambiente de Grades Computacionais
Simulador Eletromagnético em um Ambiente de Grades ComputacionaisSimulador Eletromagnético em um Ambiente de Grades Computacionais
Simulador Eletromagnético em um Ambiente de Grades ComputacionaisIgor José F. Freitas
 
Intro Arquitetura Oracle
Intro Arquitetura OracleIntro Arquitetura Oracle
Intro Arquitetura OraclePablo Garcia
 

Semelhante a 14-programacao-bd-Object Relational Mapper.pdf (20)

Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a
 
Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDD
 
Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
Aula1
Aula1Aula1
Aula1
 
Palest"Tecnologias para Desenvolvimento Baseado em Componentes"
Palest"Tecnologias para Desenvolvimento Baseado em Componentes"Palest"Tecnologias para Desenvolvimento Baseado em Componentes"
Palest"Tecnologias para Desenvolvimento Baseado em Componentes"
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com Python
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com Python
 
Sistemas distribuidos java_8
Sistemas distribuidos java_8Sistemas distribuidos java_8
Sistemas distribuidos java_8
 
JavaFX 8, Collections e Lambdas
JavaFX 8, Collections e LambdasJavaFX 8, Collections e Lambdas
JavaFX 8, Collections e Lambdas
 
Banco de Dados em Grafos com Neo4J
Banco de Dados em Grafos com Neo4J  Banco de Dados em Grafos com Neo4J
Banco de Dados em Grafos com Neo4J
 
Manual
ManualManual
Manual
 
Apresentação palestra ireport
Apresentação palestra ireportApresentação palestra ireport
Apresentação palestra ireport
 
PostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfPostgreSQL-Prático.pdf
PostgreSQL-Prático.pdf
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Minicurso Epoca mongoDB
Minicurso Epoca mongoDBMinicurso Epoca mongoDB
Minicurso Epoca mongoDB
 
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
Introdução FireDACAcesso multi-banco para Delphi e C++ BuilderIntrodução FireDACAcesso multi-banco para Delphi e C++ Builder
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
 
Simulador Eletromagnético em um Ambiente de Grades Computacionais
Simulador Eletromagnético em um Ambiente de Grades ComputacionaisSimulador Eletromagnético em um Ambiente de Grades Computacionais
Simulador Eletromagnético em um Ambiente de Grades Computacionais
 
Intro Arquitetura Oracle
Intro Arquitetura OracleIntro Arquitetura Oracle
Intro Arquitetura Oracle
 

Mais de gabriel-colman

Slide 4 CORREÇÃO DAS ATIVIDADES, Banco de dados.pdf
Slide 4 CORREÇÃO DAS ATIVIDADES, Banco de dados.pdfSlide 4 CORREÇÃO DAS ATIVIDADES, Banco de dados.pdf
Slide 4 CORREÇÃO DAS ATIVIDADES, Banco de dados.pdfgabriel-colman
 
8-uml-e-modelagem-oo Introdução a UML.pdf
8-uml-e-modelagem-oo Introdução a UML.pdf8-uml-e-modelagem-oo Introdução a UML.pdf
8-uml-e-modelagem-oo Introdução a UML.pdfgabriel-colman
 
Álgebra Linear e SQL Banco de Dados.pdf
Álgebra Linear e  SQL Banco de Dados.pdfÁlgebra Linear e  SQL Banco de Dados.pdf
Álgebra Linear e SQL Banco de Dados.pdfgabriel-colman
 
Definição Formal do MER(Conceitos do Modelo Relacional).pdf
Definição Formal do MER(Conceitos do Modelo Relacional).pdfDefinição Formal do MER(Conceitos do Modelo Relacional).pdf
Definição Formal do MER(Conceitos do Modelo Relacional).pdfgabriel-colman
 
Engenharia de Software: Processos de Software
Engenharia de Software: Processos de SoftwareEngenharia de Software: Processos de Software
Engenharia de Software: Processos de Softwaregabriel-colman
 

Mais de gabriel-colman (8)

Slide 4 CORREÇÃO DAS ATIVIDADES, Banco de dados.pdf
Slide 4 CORREÇÃO DAS ATIVIDADES, Banco de dados.pdfSlide 4 CORREÇÃO DAS ATIVIDADES, Banco de dados.pdf
Slide 4 CORREÇÃO DAS ATIVIDADES, Banco de dados.pdf
 
8-uml-e-modelagem-oo Introdução a UML.pdf
8-uml-e-modelagem-oo Introdução a UML.pdf8-uml-e-modelagem-oo Introdução a UML.pdf
8-uml-e-modelagem-oo Introdução a UML.pdf
 
Álgebra Linear e SQL Banco de Dados.pdf
Álgebra Linear e  SQL Banco de Dados.pdfÁlgebra Linear e  SQL Banco de Dados.pdf
Álgebra Linear e SQL Banco de Dados.pdf
 
Definição Formal do MER(Conceitos do Modelo Relacional).pdf
Definição Formal do MER(Conceitos do Modelo Relacional).pdfDefinição Formal do MER(Conceitos do Modelo Relacional).pdf
Definição Formal do MER(Conceitos do Modelo Relacional).pdf
 
Engenharia de Software: Processos de Software
Engenharia de Software: Processos de SoftwareEngenharia de Software: Processos de Software
Engenharia de Software: Processos de Software
 
Introdução.pdf
Introdução.pdfIntrodução.pdf
Introdução.pdf
 
10 - JS OOP.pptx
10 - JS OOP.pptx10 - JS OOP.pptx
10 - JS OOP.pptx
 
shellsort.pdf
shellsort.pdfshellsort.pdf
shellsort.pdf
 

14-programacao-bd-Object Relational Mapper.pdf

  • 2. FACOM | UFMS ORM (Object Relational Mapper) • Desenvolvido com o objetivo de flexibilizar o modelo relacional (ainda não havia nosql) • Técnica de mapeamento objeto relacional que permite fazer uma relação entre a programação orientada a objetos e o modelo relacional de banco de dados • Realiza mapeamento e manipulação dos dados • Existem inúmeros frameworks disponíveis para diversas linguagens de programação • Exemplos: • Java – Hibernate • C# – Entity Framework, Nhibernate • PHP – RedBeanPHP, Doctrine, Propel, Eloquent (Laravel) • Python – DjangoORM, SqlAlchemy • NodeJS – Sequelize • A representação é feita por meio de classes, métodos e propriedades • O Framework faz a abstração do SQL • Possui os métodos de CRUD – (create, read, update and delete) • Detalhes de conexões e queries/
  • 3. FACOM | UFMS Laboratório de Banco de Dados Banco de dados relacional Visão Geral 3 Camada de mapeamento ORM Objetos em memória Tabelas e restrições em banco de dados
  • 4. FACOM | UFMS ORM (Object Relational Mapper) • Vantagens • Independência de SGBD • Facilidade de migração • Produtividade e redução de código • Cache de dados • Segurança (sql injection por exemplo) • Arquitetura de software bem definida (necessário uma camada de integração com o banco de dados) • Desvantagens • Modelos mais complexos de entidades e relacionamentos podem causar dificuldades no mapeamento para ORM. Assim, o ORM pode não tratar corretamente • Necessário ter um bom conhecimento do funcionamento interno do ORM • Em alguns casos, é necessário utilizar queries diretamente • Aprender a utilizar um ORM pode ser mais complicado do que utilizar o SQL. Ainda mais se você trabalhar com ORMs diferentes para linguagens de programações diferentes
  • 5. Programação integrada com banco de dados É possível fazer conexões com banco de dados direta ou por meio de ORMs • Python • Direta (procedimental / OO) • Java • Direta (JDBC) • ORM (hibernate)
  • 6. Banco de Dados com python e PostgreSQL 7
  • 7. Laboratório de Banco de Dados Programas Input Output SGBD SQL Arquivos de banco de dados Visão Geral Conexão com o SGBD: cada linguagem possui uma forma de se comunicar (ODBC) 8
  • 8. FACOM | UFMS • Criada pelo holandês Guido Van Rossun em 1991, no instituto de pesquisa nacional para matemática e ciência da computação de Amsterdam • Linguagem de programação de alto nível • Totalmente OO • Multiplataforma (Windows, Linux, etc) • Quem utiliza? • Google, Yahoo, Nasa, Globo.com, Nokia, IBM, etc • Tipagem dinâmica 9
  • 9. FACOM | UFMS Laboratório de Banco de Dados 10 Tipos de dados Python Postgresql int integer, smallint long bigint float real, double Decimal numeric bool boolean str text, varchar, char list array dict tipos personalizados None null
  • 10. FACOM | UFMS Laboratório de Banco de Dados 11 Iniciando PostgreSQL com Python PSYCOPG • Uma das maneiras da linguagem Python reconhecer o banco de dados PostgreSQL é por meio do adaptador PSYCOPG, que é considerado o mais utilizado. Documentação psycopy: http://initd.org/psycopg/docs/index.html
  • 11. FACOM | UFMS Laboratório de Banco de Dados Programas Input Output SGBD PSYCOPYG Arquivos de banco de dados Visão Geral 12
  • 12. FACOM | UFMS Laboratório de Banco de Dados 13 Abrindo uma conexão CONNECT • dbname – the database name (database is a deprecated alias) • user – user name used to authenticate • password – password used to authenticate • host – database host address (defaults to UNIX socket if not provided) • port – connection port number (defaults to 5432 if not provided)
  • 13. FACOM | UFMS Laboratório de Banco de Dados 14 Abrindo um cursor CURSOR • Responsável pela instância de persistência (realiza as transações a partir da conexão do banco de dados corrente)
  • 14. FACOM | UFMS Laboratório de Banco de Dados 15 Executando comando SQL EXECUTE • Executa o comando SQL connpsql.py
  • 15. FACOM | UFMS Laboratório de Banco de Dados 16 Recuperando os resultados FETCHONE / FETCHALL / FETCHMANY • Os métodos a seguir são utilizados para recuperar os dados do banco de dados após a chamada do comando execute(<sql>) • FETCHONE(): • retorna uma única tupla (a primeira) • FETCHALL(): • retorna todas as tuplas de uma consulta • FETCHMANY(<size=cursor.arraysize]>): • retorna o número de tuplas informadas no parâmetro.
  • 16. FACOM | UFMS Laboratório de Banco de Dados 17 Recuperando os resultados FETCHALL • FETCHALL(): • retorna todas as tuplas de uma consulta
  • 17. FACOM | UFMS Laboratório de Banco de Dados 18 Recuperando os resultados FETCHONE • FETCHONE(): • retorna uma única tupla (a primeira)
  • 18. FACOM | UFMS Laboratório de Banco de Dados 19 Recuperando os resultados FETCHMANY • FETCHMANY(<size=cursor.arraysize]>): • retorna o número de tuplas informadas no parâmetro.
  • 19. FACOM | UFMS 20 Classe de conexão ConexaoPSQL.py
  • 20. FACOM | UFMS 21 Utilizando a classe connclasspsql.py
  • 21. Banco de Dados com python e Mysql 23
  • 22. FACOM | UFMS Laboratório de Banco de Dados 24 Iniciando PostgreSQL com Python PYMYSQL • Uma das maneiras da linguagem Python reconhecer o banco de dados MySQL é por meio do adaptador PYMYSQL Documentação pymysql: https://pymysql.readthedocs.io/en/latest/
  • 23. FACOM | UFMS Laboratório de Banco de Dados Programas Input Output SGBD PYMYSQL Arquivos de banco de dados Visão Geral 25
  • 24. FACOM | UFMS 26 Iniciando PostgreSQL com Python PYMYSQL connmysql.py
  • 25. Banco de Dados com Java e postgreSQL 27
  • 26. FACOM | UFMS Laboratório de Banco de Dados Integração do Java com o banco de dados 28 1. Usando JDBC: uma API (biblioteca de persistência em banco de dados relacionais do Java) para conexão com o banco de dados denominada Java DataBase Connectivity - JDBC, • Consiste em um conjunto de classes e interfaces (API) escritas em Java que fazem o envio de instruções SQL para qualquer banco de dados relacional. 2. Usando JPA: Java Persistence API, JPA. • Consiste em padrão da linguagem Java que descreve uma interface comum para frameworks de persistência de dados.
  • 27. FACOM | UFMS Laboratório de Banco de Dados Integração do Java com o banco de dados 29 • Um ponto que deve ser observado é que as criações, alterações, inserções, seleções, manipulações em geral ficam por responsabilidade do programador através de SQL, ele deve fornecer os comandos que deseja executar no banco de dados. • A JDBC é responsável apenas pela conexão com o banco, envio de instruções e devolução dos dados e não pela manipulação dos dados em si.
  • 28. FACOM | UFMS Programas Input Output SGBD JDBC Arquivos de banco de dados Visão Geral 30 Pacote java.sql
  • 29. FACOM | UFMS Laboratório de Banco de Dados 31 JDBC - Integração do Java com o banco de dados 1. Conectar-se a um banco de dados qualquer através da API JDBC; 2. Criar uma fábrica de conexões usando o design pattern Factory; 3. Pesquisar dados por meio de queries; 4. Encapsular suas operações com bancos de dados através de DAO - Data Access Object.
  • 30. FACOM | UFMS Laboratório de Banco de Dados 32 JDBC - Integração do Java com o banco de dados 1. Conectar-se a um banco de dados qualquer através da API JDBC; • A conexão a um banco de dados é feita de modo a evitar que cada banco tenha a sua própria API e um conjunto de classes e métodos, temos um único conjunto de interfaces muito bem definidas que devem ser implementadas. • Esse conjunto de interfaces fica dentro do pacote java.sql e nos referiremos a ele como JDBC. • Entre as diversas interfaces deste pacote, existe a interface Connection, que define métodos para executar uma query (como um insert e select), commit de transação, fechar a conexão, entre outros.
  • 31. FACOM | UFMS Laboratório de Banco de Dados 33 JDBC - Integração do Java com o banco de dados ConnectionMain.class
  • 32. FACOM | UFMS Laboratório de Banco de Dados 34 JDBC - Integração do Java com o banco de dados 2. Criar uma fábrica de conexões usando o design Pattern Factory e DAO; Factory (fábrica) • Encapsula a instanciação de tipos concretos DAO (Data Access Object) • Separa a lógica de negócio da lógica de persistência de dados • Responsável por trocar informações com o SGBD fornecendo operações de CRUD Os Design Patterns são uma coleção de padrões de projeto de software que contém soluções para problemas conhecidos e recorrentes no desenvolvimento de software descrevendo uma solução comprovada para um problema de projeto recorrente.
  • 33. FACOM | UFMS 35 JDBC - Integração do Java com o banco de dados 2. Criar uma fábrica de conexões usando o design Pattern Factory ConnectionFactory.class
  • 34. FACOM | UFMS 36 JDBC - Integração do Java com o banco de dados 2. Criar uma classe DAO para separa a lógica de persistência DepartamentoDAO.class
  • 35. FACOM | UFMS 37 JDBC - Integração do Java com o banco de dados 2. Teste da persistência utilizando JDBC DepartamentoDAOTest.class
  • 36. FACOM | UFMS Laboratório de Banco de Dados 38 JPA - Integração do Java com o banco de dados • JPA (Java Persistence API) – ferramenta de mapeamento objeto-relacional (ORM - Object-relational mapping) • Hibernate ferramento ORM open source que é uma inspiração para o JPA • Hibernate: • Abstrai o seu código SQL e a camada JDBC (são gerados em tempo de execução) • Gera o SQL de acordo com o SGBD, tornando transparente dentro do Java a mudança de um SGBD para outro
  • 37. FACOM | UFMS Laboratório de Banco de Dados 39 JPA - Integração do Java com o banco de dados • Mapeamento
  • 38. FACOM | UFMS Laboratório de Banco de Dados Links úteis • Material de programação com python: https://www.py4e.com/book • https://jdbc.postgresql.org/documentation/80/connect.html • https://www.caelum.com.br/apostila-java-web/uma-introducao-pratica- ao-jpa-com-hibernate/ • https://www.jetbrains.com/help/idea/2016.1/creating-persistence- units.html 40