JPA (Java Persistence API) Marcos Kalinowski

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

Download "JPA (Java Persistence API) Marcos Kalinowski (kalinowski@ic.uff.br)"

Transcrição

1 JPA (Java Persistence API)

2 Agenda Conceitos básicos do JPA Mapeamento objeto relacional utilizando JPA Utilizando JPA para a persistência na prática EntityManager JPQL (Java Persistence Query Language) 2

3 Agenda Conceitos básicos do JPA Mapeamento objeto relacional utilizando JPA Utilizando JPA para a persistência na prática EntityManager JPQL (Java Persistence Query Language) 3

4 Conceitos básicos do JPA JPA é uma abstração em cima do JDBC que torna possível ser independente do SQL Todas as classes e anotações da API JPA estão no pacote javax.persistence 4

5 Principais componentes do JPA ORM (Object-Relational Mapping) para a criação de objetos de domínio que podem ser persistidos (Entities) Uma API (EntityManager) para desempenhar operações de BD como Criar, Ler, Atualizar e Remover (CRUD) A linguagem de consulta de persistência Java (Java Persistence Query Language - JPQL) que permite recuperar dados com uma linguagem de consulta OO 5

6 O Conceito de Entidade Quando estamos mapeando objetos para um BD relacional, para persisti-los ou consultá-los o termo entidade deve ser usado Objetos são apenas mantidos em memória Entidades são objetos que são mantidas na memória durante um algum intervalo de tempo e, então persistidas no banco de dados Suportam herança, relacionamentos, etc. Desde que mapeados para o gerenciamento do JPA Uma vez persistidas, as entidades podem ser consultadas através da JPQL 6

7 Agenda Conceitos básicos do JPA Mapeamento objeto relacional utilizando JPA Utilizando JPA para a persistência na prática EntityManager JPQL (Java Persistence Query Language) 7

8 Mapeamento Objeto-Relacional O princípio do ORM é delegar a ferramentas externas (no nosso caso JPA) a tarefa de criar uma correspondência entre objetos e tabelas O mundo das classes, objetos e atributos podem, então, ser mapeados para BDs relacionais consistindo em tabelas, linhas e colunas O mapeamento proporciona uma visão orientada à objetos aos desenvolvedores que podem usar entidades em vez de tabelas de forma transparente 8

9 Mapeamento Objeto-Relacional Há uma diferença semântica significativa entre o modelo de classes de um projeto orientado a objetos e o modelo relacional. Assim, para que a persistência de objetos seja feita em um banco de dados relacional, é necessário proceder um mapeamento entre esses dois mundos. Diretriz: O mapeamento só deve ser visível na camada de persistência, isolando as classes de domínio do impacto da tecnologia de bancos de dados. Alternativas: Padrão DAO; Frameworks como JPA 9

10 Mapeamento Objeto-Relacional No mapeamento dos mundos de objetos e relacional, as seguintes questões devem ser abordadas: Mapeamento de Classes para Tabelas e de Objetos para Linhas; Mapeamento de Herança; Mapeamento de Relacionamentos entre Objetos. 10

11 Mapeamento de Classes para Tabelas e de Objetos para Linhas Quando não há herança, cada classe deve ser mapeada em uma tabela e cada instância da classe (objeto) em uma linha desta tabela. E as chaves primárias das Tabelas? Objetos têm identidade própria, independentemente dos valores de seus atributos. Que identificador devemos designar aos nossos objetos no banco de dados relacional? Verificar se há um atributo na classe com propriedade de identificação única e utilizá-lo, então, como chave primária. Caso não haja um atributo com tal característica, deverá ser criado um. 11

12 Mapeando Herança Existem três soluções razoavelmente aplicáveis para mapear a herança em um banco de dados relacional: 1) Utilizar uma tabela por classe na hierarquia, com chaves estrangeiras para a classe pai. 2) Utilizar uma tabela por classe filha na hierarquia. Cada tabela derivada para as classes concretas inclui tanto os atributos da classe quanto os de suas superclasses. Problemas? Possível redundância e inconsistência de dados. 3) Utilizar uma tabela para a classe pai com todos os atributos. As subclasses serão views da classe pai. Problemas? Possível redundância e inconsistência de dados. 12

13 Mapeando Relacionamentos É necessário transpor chaves entre tabelas para mapear relacionamentos. As regras válidas para o modelo relacional tem de ser aplicadas, tal como criar uma tabela adicional para mapear um relacionamento muitos-para-muitos. 13

14 Exemplo 14

15 Exemplo 15

16 Definição das Tabelas Alternativa 1 16

17 Definição das Tabelas Alternativa 2 (a princípio menos interessante) 17

18 Definição das Tabelas Alternativa 3 18

19 Exemplo 19

20 Definição das Tabelas 20

21 Exemplo 21

22 Definição das Tabelas 22

23 Mapeamento Objeto-Relacional Mas como o JPA mapeia objetos para um BD? Através de metadados! No JPA, metadados podem ser de dois tipos: Anotações: a classe é anotada com informações sobre como deve ser persistida Descritores XML: neste caso, o mapeamento é definido em um arquivo XML externo Podem ser usados em conjunto com anotações e oferecem a possibilidade de serem editados sem mudar o código Utiliza configuração por exceção Exemplo: por padrão, o nome da tabela é o mesmo da entidade, mas é configurável via metadados 23

24 Trabalhando com uma Entidade 24

25 Trabalhando com uma Entidade 25

26 Trabalhando com uma Entidade 26

27 Regras para Implementação de uma Entidade A entidade deve ser anotada A deve ser usada para criar uma chave primária simples A classe entidade deve possuir um construtor sem argumentos o qual deve ser public ou protected A classe entidade não pode ser um enum ou interface, apenas class é permitido A classe entidade não deve ser final. Nenhum dos métodos ou variáveis de instância pode ser final 27

28 Configuração por Exceção Desde que as entidades respeitem as regras, o provedor de persistência pode fazer o mapeamento considerando algumas convenções O nome da classe é mapeado como o nome da tabela Para mudar o nome use a Os nomes dos atributos são mapeados como nome das colunas Para mudar o nome use a Para mapear os tipos de dados, as mesmas regras do JDBC são válidas Por exemplo, String mapeia para VARCHAR O tamanho do varchar tem como padrão

29 @Table Elementos Básicos do Mapeamento: Tabelas Pode-se definir propriedades da tabela, como seu nome Por padrão, os nomes das tabelas são criadas com letra maiúscula, assim como nome da classe = livro") 29

30 Elementos Básicos do Mapeamento: Permite que os atributos de uma Entidade (classe) possa ser distribuído entre mais de uma tabela Para várias tabelas secundárias Exemplo: = = pais") }) Para mapear os atributos para as diferentes tabelas = cidade") private String cidade; Colunas que não especificarem a sua tabela serão mapeadas para a tabela primária Importante: considere questões de desempenho se optar por utilizar tabelas secundárias 30

31 @Id Elementos Básicos do Mapeamento: Chaves Primárias Define uma chave primária Pode ser dos seguintes tipos: Tipos primitivos: byte, int, short, long e char Classes wrapper : Byte, Integer, Short, Long, Character Strings, números e datas: String, BigInteger e Date 31

32 Elementos Básicos do Define que a coluna ter um valor gerado automaticamente Possui quatro valores: Chaves Primárias SEQUENCE e IDENTITY: define uma coluna sequence ou identity, respectivamente. TABLE: instrui o provedor de persistência a usar uma tabela para armazenar a semente da sequencia. É criada uma tabela com duas colunas - uma contendo o nome (arbitrário) e a outra o valor AUTO: a escolha da estratégia para geração do chave é feita automaticamente = GenerationType.AUTO) 32

33 Elementos Básicos do Mapeamento: Atributos O JPA permite o mapeamento dos seguintes tipos: Tipos primitivos (int, double, etc.) e as classes wrapper Array de bytes e caracteres String, númerico (BigInteger) e os temporais (Date, Calendar, Time e Timestamp) Tipos enumerados e definidos pelo usuário (atributos cujo o tipo seja uma classe definida pelo desenvolvedor) Requer um mapeamento entre entidades 33

34 @Basic Elementos Básicos do Mapeamento: Atributos É o tipo de mapeamento mais simples, definindo (através de seus parâmetros): optional: indica se o atributo é obrigatório ou não (se pode ser null na base de dados) fetch: indica se o atributo deve ser carregado quando a aplicação utilize o valor através da chamada get (LAZY) ou se carrega-o no momento que o objeto for criado (EAGER) fetch=fetchtype.lazy) private String descricao; 34

35 @Column Elementos Básicos do Mapeamento: Atributos Define grande parte das propriedades comuns à colunas em banco de dados: Ex: name, length, unique etc. Algumas outras Usada para definir Permite que um atributo não seja persistido Lembre-se ainda: anotações de mapeamento de atributo também podem ser usadas no método get 35

36 Elementos Básicos do Mapeamento: Relacionamentos (associações) No paradigma OO, as associações se resumem as seguintes formas: Unidirecional Bidirecional Com cardinalidade 36

37 Elementos Básicos do Mapeamento: Relacionamentos (associações) Desta forma, temos as seguintes combinações: Cardnalidade um para um um para um um para muitos um para muitos/muitos para um muitos para um muitos para muitos muitos para muitos Direcionamento Unidirecional Bidirecional Unidirecional Bidirecional Unidirecional Unidirecional Bidirecional Usaremos as seguintes notações para mapear @ManyToOne, 37

38 Elementos Básicos do Mapeamento: Relacionamentos (associações) No paradigma OO, o direcionamento define qual classe enxerga qual Em resumo, significa qual tem um atributo de referência para qual Em um relacionamento bidirecional ambas se referem No modelo entidade-relacionamento, existe uma decisão a mais para um relacionamento bidirecional: Quem (qual tabela) fica com a informação de relacionamento (chave estrangeira)? 38

39 Elementos Básicos do Mapeamento: Relacionamentos (associações um para um) Mapeando um relacionamento um para um bidirecional anotações Indica um relacionamento um para um Só é necessária no relacionamento bidirecional para indicar quem mapeia informações de relacionamento Pode ser usado opcionalmente para definir propriedades de cascade, fetch, dentre Elemento opcional que permite definir informações sobre a chave estrangeira (e.g., nome da coluna da chave estrageira) 39

40 Elementos Básicos do Mapeamento: Relacionamentos (associações um para um) 40

41 Elementos Básicos do Mapeamento: Relacionamentos (associações um para muitos) O relacionamento um para muitos unidirecional também pode ser mapeado por convenção Basta, para isto, que o tipo da lista seja Opcionalmente pode-se para definições adicionais 41

42 Elementos Básicos do Mapeamento: Relacionamentos (associações um para muitos) Relacionamentos um para muitos bidirecionais são análogos ao um para um, fazendo o uso (no lugar No relacionamento muitos para muitos bidirecional, como em todo relacionamento bidirecional, deve-se definir quem é o dono do relacionamento Para isto, usa-se o mappedby A tabela de mapeamento pode ser configurada Esta anotação também pode ser usada quando existir uma tabela de relacionamento 42

43 Elementos Básicos do Mapeamento: Relacionamentos (associações um para muitos) Repare fica na entidade dona do relacionamento, ou seja, a que não possui um atributo mapeada por outra 43

44 Um pequeno parênteses: ordenando o mapeamento 44

45 Elementos Básicos do Mapeamento: Relacionamentos (herança) Existem três estratégias para mapeamento de herança como sempre existe uma adotada por convenção: Uma única tabela por hierarquia (SINGLE_TABLE): a soma dos atributos é distribuída em uma tabela (estratégia padrão) Joined-subclass (JOINED): nesta abordagem, cada entidade da hierarquia, concreta ou abstrata, é mapeada em uma tabela diferente Uma tabela por classe concreta (TABLE_PER_CLASS): esta estratégia mapeia cada entidade concreta para uma tabela separada 45

46 Elementos Básicos do Mapeamento: Relacionamentos (herança) Algumas anotações Define a estratégia de mapeamento de Define o nome da coluna que identifica o tipo ao qual um determinado registro Define o valor para o tipo da entidade na qual a anotação é utilizada 46

47 Elementos Básicos do Mapeamento: Relacionamentos (herança) - Exemplo 47

48 Exercício (Atividade Prática) Defina Entidades JPA para o seguinte modelo: 48

49 Agenda Conceitos básicos do JPA Mapeamento objeto relacional utilizando JPA Utilizando JPA para a persistência na prática EntityManager JPQL (Java Persistence Query Language) 49

50 Utilizando JPA para a Persistência na Prática O elemento central da manipulação e consulta da base de dados é feita pela API da classe EntityManager Provê API para criação, remoção, busca e sincronização dos objetos com o banco de dados Além disto, permite a execução de consultas JPQL As consultas JPQL assemelham-se com a SQL, mas operam sobre objetos utilizando, por exemplo, a notação de ponto (.) dentro das consultas Exercício: verificar a documentação da API da classe EntityManager 50

51 Executando uma Consulta Simples Buscando pela chave Private EntityManager em; Book book = em.find(book.class, id); Note que o código acima não possui nenhuma referência a SQL, JPQL ou JDBC A classe EntityManager faz tudo isto por debaixo dos panos 51

52 Obtendo um EntityManager Existem duas formas de se obter e manipular um EntityManager Gerenciado pela Aplicação A aplicação obtém o EntityManager por meio de uma factory e também é responsável por gerenciar as transações e recursos (begin(), commit(), close() etc). Gerenciado pelo Container Em um ambiente gerenciado pelo container é possível fazer com que o EntityManager seja injetado em um EJB, por exemplo. 52

53 Exemplo: Persistindo uma Entidade com um EntityManager Gerenciado pelo public class LivroBean private EntityManager em; public void crialivro() { Livro livro = new Livro(); livro.settitulo("o Guia do Mochileiro das Galáxias"); livro.setpreco(38.5f); livro.setdescricao("humor e ficção científica"); livro.setnumpaginas(380); em.persist(livro); } Como pode ser visto no exemplo acima, em um ambiente gerenciado, o EntityManager não precisa ser instanciado nem ter os seus recursos e transação manipulados 53

54 O Contexto de Persistência Independentemente se o EntityManager é gerenciado pelo container ou pela aplicação, ele sempre está atrelado a um contexto de persistência. O contexto de persistência pode ser entendido como um cache. Toda entidade manipulada pelo EntityManager estará neste contexto evitando chamadas desnecessárias ao banco de dados. Exemplos: Quando uma entidade é recuperada através da chave primária com o método find(), o EntityManager primeiro verifica se aquele objeto já não está naquele contexto Quando o método persist() é invocado o EntityManager coloca a entidade persistida no contexto de persistência 54

55 O Contexto de Persistência Todo EntityManager esta ligado a uma unidade de persistência definida no arquivo persistence.xml pelo elemento <persistence-unit/> Neste elemento são definidas todas as classes que podem fazer parte de um contexto de persistência Além disto, define como as transações são manipuladas transaction-type="resource_local " para EntityManager gerenciados pela aplicação transaction-type= JTA" para EntityManagers gerenciados pelo container O escopo do contexto de persistência depende do tipo da transação utilizada pelo EntityManager, ou seja, como é gerenciado: Gerenciado pela aplicação Mantém-se enquanto o método close() do EntityManager não for chamado Gerenciado pelo container Mantém-se enquanto a transação JTA for mantida. O que normalmente significa enquanto o EJB for mantido pelo container 55

56 EntityManager: Buscando pelo ID Existem duas formas de buscar pelo ID Com o find() Livro livro = em.find(livro.class, 123L); if(livro!= null) { //processa o objeto } Com getreference() try { Livro livro = em.getreference(livro.class, 123L); //processa o objeto } catch (EntityNotFoundException e) { //Entidade não encontrada } Além das diferenças visíveis na forma de recuperar uma entidade, o objeto retornado por getreference() tem suas propriedades recuperadas tardiamente (lazy fetched) Dica: se for apenas fazer set no objeto, use getreference() 56

57 EntityManager: Removendo uma Entidade Usa-se o método remove et.begin(); em.remove(livro); et.commit(); Mas como lidar com os objetos órfãos? O JPA oferece um recurso para desde que a entidade órfão (Capa) seja referenciada por apenas uma entidade private Capa capa; 57

58 EntityManager: Atualizando uma Entidade Gerenciada Para atualizar uma entidade gerenciada basta chamar o método persist() et.begin(); em.persist(livro); et.commit(); livro.settitulo( Novo Título ) et.begin(); em.persist(livro); et.commit(); 58

59 EntityManager: Cascateando Eventos Por padrão, os métodos persist() e remove() trabalham apenas com a entidade passada como parâmetro Para fazer com que as entidades relacionadas também sejam persistidas ou removidas é necessário fazer os eventos em cascata et.begin(); em.persist(livro); em.persist(capa); et.commit(); Para que capa seja persistida junto com livro sem a necessidade de persistí-los individualmente o cascade por ser usado É uma opção disponível nas diferentes anotações (cascade = {CascadeType.PERSIST, CascadeType.REMOVE}) private Capa capa; O código ficaria desta forma: et.begin(); em.persist(livro); et.commit(); 59

60 O Ciclo de Vida das Entidades em Detalhe 60

61 Callbacks 61

62 Agenda Conceitos básicos do JPA Mapeamento objeto relacional utilizando JPA Utilizando JPA para a persistência na prática EntityManager JPQL (Java Persistence Query Language) 62

63 JPQL: Java Persistence Query Language JPQL é uma linguagem de consulta a entidades, independente da implementação de banco de dados usada É uma linguagem fortemente baseada no SQL, mas tem sintaxe mais próxima da orientação a objetos Notação minhaclasse.meuatributo Para executar uma consulta JPQL, o JPA a transforma em SQL e realiza chamadas JDBC ao banco de dados Exemplo de uma consulta simples: SELECT l FROM Livro l WHERE l.titulo = Guia do Mochileiro das Galáxias 63

64 A Sintaxe do Comando SELECT Como quase todos os comandos JPQL a sintaxe do comando SELECT é idêntica ao SQL SELECT <select expression> FROM <from clause> [WHERE <conditional expression>] [ORDER BY <order by clause>] [GROUP BY <group by clause>] [HAVING <having clause>] 64

65 INSERT, UPDATE e DELETE O JPQL não possui o comando INSERT Os comandos UPDATE e DELETE devem ser usados apenas para atualizações em lote Exemplos: DELETE FROM Livro l WHERE l.preco < 10 UPDATE Livro l SET l.descricao = PROMOÇÃO WHERE l.preco < 10 65

66 Consultas Como integrar as consultas vistas anteriormente a sua aplicação? O JPA oferece 3 tipos de consultas que podem ser usadas no código Dynamic queries: é o formato mais simples de consulta, consistindo de uma consulta JPQL definida em tempo de execução Named queries: são estáticas e imutáveis Native queries: útil para executar consultas SQL nativas no lugar de JPQL 66

67 Consultas O EntityManager é a classe responsável por fornecer consultas (classes do tipo Query) Método Descrição Query createquery(string jpqlstring) Query createnamedquery(string name) Query createnativequery(string sqlstring, Class resultclass) Cria uma instância de Query para executar consultas dinâmicas Cria uma instância de Query para executar uma consulta nomeada Cria uma instância de Query para executar uma consulta SQL nativa passando a classe com os resultados resperados 67

68 A API da classe Query Os métodos mais usados são para executar uma query, podendo ser de três tipos Queries do tipo SELECT O método getresultlist() executa a consulta e retorna uma lista de resultados O método getsingleresult() executa a consulta e retorna um resultado único Para queries do tipo UPDATE e DELETE utiliza-se o método executeupdate() 68

69 Consultas Dinâmicas String jpqlquery = "SELECT l FROM Livro l"; if (algumcriterio) jpqlquery += " where l.preco < :pco"; query = em.createquery(jpqlquery); query.setparameter("pco", 10.0); List<Livro> livros = query.getresultlist(); É importante observar que consultas JPQL são traduzidas, em tempo de execução, para SQL usando metadados do mapeamento ORM. Isto pode ser alvo de problemas de desempenho, que pode ser resolvido por meio do uso de consultas nomeadas (estáticas e imutáveis) 69

70 Consultas Nomeadas Não são flexíveis como as consultas dinâmicas, pois não podem ser montadas em tempo de execução Mas são mais eficientes, em termos de desempenho, já que são traduzidas uma vez, quando a aplicação é iniciada em vez de toda vez que a consulta @NamedQuery(name = "buscatodos", query="select l from Livro = "buscapromocao", query = "select l from Livro l where l.preco < :pco") }) public class Customer { // } 70

71 Consultas Nomeadas Buscando todos Query query = em.createnamedquery("buscatodos"); List<Livro> livros = query.getresultlist(); Buscando três promoções Query query = em.createnamedquery("buscapromocao"); query.setparameter("pco", 10.0); query.setmaxresults(3); List<Livro> livros = query.getresultlist(); P.S: O nome da consulta deve ser único (independente da entidade que a contém) 71

72 Consultas Nativas Consultas nativas podem ser dinâmicas Query query = em.createnativequery("select * FROM t_livro", Livro.class); List<Livro> livros = query.getresultlist(); Ou = buscatodos", query="select * from = "t_livro") public class Livro { // } 72

73 Agenda Conceitos básicos do JPA Mapeamento objeto relacional utilizando JPA Utilizando JPA para a persistência na prática EntityManager JPQL (Java Persistence Query Language) 73

74 Exercícios Injetar um EntityManager no EJB com agendamento criado em exercício anterior e fazer com que ele periodicamente: Crie e persista uma entidade Tempo (bastam dois campos na Tabela, id e tempoatual). Estender seu próprio projeto, transformando seus objetos de domínio em entidades persistentes JPA. 74

75 Exemplo Injetando um EntityManager em um EJB com agendamento para persistir informações de Livros e Autores (@ManyToMany): Três Métodos PersisteLivro Executa de 10 em 10 segundos e sorteia um livro a ser persistido. ListaLivros Executa de de 30 em 30 segundos e lista todos os livros cadastrados no banco de dados. ApagaLivro Executa de 20 em 20 segundos, sorteia um dos livros cadastrados no banco e o apaga. 75

76 Estrutura Alvo 76

77 Criando o Banco de Dados 77

78 Criando as Classes de Entidade (JPA) 78

79 @Entity = "findallbooks", query = "select b from Book = "findbooksbygenre", query = "select b from Book b where b.genre = :genre") }) public class Book implements = GenerationType.AUTO) private int id; nullable=false) private String isbn; private String (cascade = {CascadeType.PERSIST, CascadeType.REMOVE}) private List<Author> authors; private String // opções DATE, TIME e TIMESTAMP private Date creationdate; public Book() { } public Book(String isbn, String title, List<Author> authors, String genre) { this.isbn = isbn; this.title = title; this.authors = authors; this.genre = genre; this.creationdate = new Date(); } } // getters e setters 79

80 @Entity public class Author = GenerationType.AUTO) private int id; private String firstname; private String lastname; public Author() { } public Author(String firstname, String lastname) { this.firstname = firstname; this.lastname = lastname; } } public String getcitationstring(){ return lastname + ", " + firstname; } 80

81 O persistence.xml <?xml version="1.0" encoding="utf-8"?> <persistence version="2.1" xmlns=" xmlns:xsi=" xsi:schemalocation=" <persistence-unit name="enterpriseapplicationexemplopersistencia-ejbpu" transaction-type="jta"> <jta-data-source>biblioteca</jta-data-source> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties> <property name="javax.persistence.schema-generation.database.action" value="create-or-extend-tables"/> </properties> </persistence-unit> </persistence> 81

82 O glassfish-resources.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" " <resources> <jdbc-connection-pool... name="derby_net_biblioteca_pool...> <property name="servername" value="localhost"/> <property name="portnumber" value="1527"/> <property name="databasename" value="biblioteca"/> <property name="user" value="root"/> <property name="password" value="root"/> <property name="url" value="jdbc:derby://localhost:1527/biblioteca"/> <property name="driverclass" value="org.apache.derby.jdbc.clientdriver"/> </jdbc-connection-pool> <jdbc-resource enabled="true" jndi-name="biblioteca" object-type="user" pool-name="derby_net_biblioteca_pool"/> </resources> 82

83 Criando o TimerSessionBean 83

84 Criando public class TimerBookManager private EntityManager em; Injeção do EntityManager // Aqui entram os três métodos } 84

85 Método que executa de 10 em 10 segundos e sorteia um livro a ser = "Mon-Fri", month = "*", hour = "9-22", dayofmonth = "*", year = "*", minute = "*", second = "*/10") public void persistelivro() { List<Book> books = new ArrayList(); // Criando um livro e adicionando na lista de livros List<Author> authors = new ArrayList(); Author author = new Author ("Guilherme", "Travassos"); authors.add(author); author = new Author ("Marcos", "Kalinowski"); authors.add(author); Book b = new Book(" ", "imps 2013 : evidências sobre o desempenho das empresas que adotaram o modelo MPS-SW", authors, "Científico"); books.add(b); // Mais exemplos de livros... //Sorteando o livro que será adicionado no banco Random rn = new Random(); int chosenbook = Math.abs(rn.nextInt())%books.size(); } b = books.get(chosenbook); System.out.println("Adicionando um livro " + b.tostring()); em.persist(b); 85

86 Método que executa de de 30 em 30 segundos e lista todos os livros cadastrados no banco de = "Mon-Fri", month = "*", hour = "9-22", dayofmonth = "*", year = "*", minute = "*", second = "*/30") public void listalivros() { //Pegando todos os livros do banco Query query = em.createnamedquery("findallbooks"); List<Book> books = query.getresultlist(); } //Listagem dos livros System.out.println("Listagem dos livros técnicos cadastrados no Banco: "); for (Book book: books){ System.out.println(book.toString()); } 86

87 Método que executa de 20 em 20 segundos, sorteia um dos livros cadastrados no banco e o = "Mon-Fri", month = "*", hour = "9-22", dayofmonth = "*", year = "*", minute = "*", second = "*/20") public void apagalivro() { //Pegando todos os livros do banco Query query = em.createnamedquery("findallbooks"); List<Book> books = query.getresultlist(); //Escolhendo um livro aleatorio Random rn = new Random(); int chosenbook = Math.abs(rn.nextInt())%books.size(); Book book = books.get(chosenbook); } //Removendo ele do banco System.out.println("Removendo um livro " + book.tostring()); em.remove((book) books.get(chosenbook)); 87

88 Rodando o Exemplo 88

89 Rodando o Exemplo Saída Esperada: 89

90 Banco de dados e registros criados: Rodando o Exemplo 90

91 Leituras Sugeridas Java EE 7 Tutorial, Eric Jendrock, Ricardo Cervera-Navarro, Ian Evans, Kim Haase, William Markito Part VIII Persistence Java EE 7: The Big Picture, Danny Coward Capítulo 12, Modern Memories: The Java Persistence API 91

92 JPA (Java Persistence API)

Aula 2 - Revisão de JPA (Java Persistence API)

Aula 2 - Revisão de JPA (Java Persistence API) Aula 2 - Revisão de JPA (Java Persistence API) Professor: Ricardo Luis dos Santos IFSUL 2015 Tabela para Revisão Assunto (JPA) Interesse? 1 Vantagens e Desvantagens 4 2 Principais Conceitos 7 3 Anotações

Leia mais

Aula 2 - Revisão de JPA (Java Persistence API)

Aula 2 - Revisão de JPA (Java Persistence API) Aula 2 - Revisão de JPA (Java Persistence API) Professor: Ricardo Luis dos Santos IFSUL 2015 Tabela para Revisão Assunto (JPA) Interesse? 1 Vantagens e Desvantagens 4 2 Principais Conceitos 7 3 Anotações

Leia mais

Persistência de Dados em Java com JPA e Toplink

Persistência de Dados em Java com JPA e Toplink Persistência de Dados em Java com JPA e Toplink Vinicius Teixeira Dallacqua Curso de Tecnologia em Sistemas para Internet Instituto Federal de Educação, Ciência e Tecnologia - IFTO AE 310 Sul, Avenida

Leia mais

Hibernate. Mapeamento Objeto-Relacional. Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior

Hibernate. Mapeamento Objeto-Relacional. Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior Hibernate Mapeamento Objeto-Relacional Baseado nas notas de aula de João Dalyson e Raphaela Galhardo Fernandes Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior Objetivos Aprender MOR usando Hibernate

Leia mais

Mapeamento Lógico/Relacional com JPA

Mapeamento Lógico/Relacional com JPA Mapeamento Lógico/Relacional com JPA Elaine Quintino da Silva Doutora em Ciência da Computação pelo ICMC-USP/São Carlos Analista de Sistemas UOL PagSeguro Instrutora Globalcode Agenda! Persistência de

Leia mais

ruirossi@ruirossi.pro.br

ruirossi@ruirossi.pro.br Persistência Com JPA & Hibernate Rui Rossi dos Santos ruirossi@ruirossi.pro.br Mediador: Rui Rossi dos Santos Slide 1 Mapeamento Objeto-Relacional Contexto: Linguagem de programação orientada a objetos

Leia mais

Java Persistence API. Entity Entity Campos e Propriedades Entity Chaves Primárias Entity Associações

Java Persistence API. Entity Entity Campos e Propriedades Entity Chaves Primárias Entity Associações Java Persistence API Entity Entity Campos e Propriedades Entity Chaves Primárias Entity Associações Entity Manager Entity Manager API Java Persistence Query Language (JPQL) Persistence Units 1 Java Persistence

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Curso: Engenharia de Software Arquitetura de Software Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 9 Mapeamento em JPA Introdução O mapeamento objeto-relacional

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

Aula 4. Carlos Eduardo de Carvalho Dantas (carloseduardocarvalhodantas@gmail.com)

Aula 4. Carlos Eduardo de Carvalho Dantas (carloseduardocarvalhodantas@gmail.com) Persistência com JDBC e JPA Aula 4 Carlos Eduardo de Carvalho Dantas (carloseduardocarvalhodantas@gmail.com) A sabedoria não se transmite, é preciso que nós a descubramos fazendo uma caminhada que ninguém

Leia mais

JPA Passo a Passo. Henrique Eduardo M. Oliveira henrique@voffice.com.br. Globalcode Open4Education

JPA Passo a Passo. Henrique Eduardo M. Oliveira henrique@voffice.com.br. Globalcode Open4Education JPA Passo a Passo Henrique Eduardo M. Oliveira henrique@voffice.com.br 1 Palestrante Henrique Eduardo M. Oliveira (henrique@voffice.com.br) > Trabalha: Arquiteto JEE / Instrutor Java > Formação: Ciências

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Curso: Sistemas de Informações Arquitetura de Software Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 7 JPA A Persistência com JPA Para configurar o JPA

Leia mais

Hibernate. Mapeamento O/R Marcio Aguiar Ribeiro aguiar.marcio@gmail.com

Hibernate. Mapeamento O/R Marcio Aguiar Ribeiro aguiar.marcio@gmail.com Hibernate Mapeamento O/R Marcio Aguiar Ribeiro aguiar.marcio@gmail.com Hibernate O que é? Ferramenta para mapeamento O/R em Java Uma das mais difundidas Transparência Independência quanto ao tipo de base

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Curso: Engenharia de Software Arquitetura de Software Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 11 Mapeamento em JPA - Continuação Objetos Embutidos

Leia mais

Padrão J2EE Data Access Object (DAO)

Padrão J2EE Data Access Object (DAO) Introdução CRUD DAO Exemplo Padrão J2EE Data Access Object (DAO) Prof. Enzo Seraphim Motivação para usar Componentes precisam acessar e armazenar informações em armazenamento persistente As APIs de armazenamento

Leia mais

Persistência de dados com JPA. Hélder Antero Amaral Nunes haanunes@gmail.com

Persistência de dados com JPA. Hélder Antero Amaral Nunes haanunes@gmail.com Persistência de dados com JPA Hélder Antero Amaral Nunes haanunes@gmail.com O que é persistência? A persistência de dados é o fato de pegar um dado e torná-lo persistente, ou seja, salvar em algum banco

Leia mais

Persistindo dados com TopLink no NetBeans

Persistindo dados com TopLink no NetBeans Persistindo dados com TopLink no NetBeans O que é TopLink? O TopLink é uma ferramenta de mapeamento objeto/relacional para Java. Ela transforma os dados tabulares de um banco de dados em um grafo de objetos

Leia mais

HIBERNATE Criando um projeto em Java + Hibernate do zero

HIBERNATE Criando um projeto em Java + Hibernate do zero HIBERNATE Criando um projeto em Java + Hibernate do zero SUMÁRIO 1 Instalação do NetBeans 2 Instalação do Java Development Kit (JDK) 3 Criar projeto no NetBeans 4 O arquivo hibernate.cfg.xml 5 Criar as

Leia mais

Resolvendo objeto-relacional impedance mismatch com hibernate

Resolvendo objeto-relacional impedance mismatch com hibernate Resolvendo objeto-relacional impedance mismatch com hibernate August 7, 2013 Sumário I 1 Introdução 2 3 4 Sumário II 5 Contexto Mapeamento Objeto-Relacional (ORM) é uma técnica de programação para converter

Leia mais

Auditando persistência com JPA

Auditando persistência com JPA a r t i g o Em ambientes corporativos, a auditoria sobre as operações de banco de dados é importantíssima, quando não, indispensável. Essa importância surge a partir de um conjunto de necessidades, como:

Leia mais

Módulo 03. Mapeando Associações/Relacionamentos. Raphaela Galhardo. raphaela@jeebrasil.com.br

Módulo 03. Mapeando Associações/Relacionamentos. Raphaela Galhardo. raphaela@jeebrasil.com.br Módulo 03 Mapeando Associações/Relacionamentos Raphaela Galhardo raphaela@jeebrasil.com.br Associações Um-para-um; Muitos-para-um; Um-para-muitos; Muitos-para-muitos. Associações - OneToMany Exemplo: Uma

Leia mais

ALTO DESEMPENHO UTILIZANDO FRAMEWORK HIBERNATE E PADRÃO JAVA PERSISTENCE API

ALTO DESEMPENHO UTILIZANDO FRAMEWORK HIBERNATE E PADRÃO JAVA PERSISTENCE API ALTO DESEMPENHO UTILIZANDO FRAMEWORK HIBERNATE E PADRÃO JAVA PERSISTENCE API Tiago Henrique Gomes da Silva Balduino 1, Ricardo Ribeiro Rufino 1 1 Universidade Paranaense (Unipar) Paranavaí PR Brasil tiagobalduino77@gmail.com

Leia mais

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF)

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF) Sessão Prática II JPA entities e unidades de persistência 1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF) a) Criar um Web Application (JPAsecond) como anteriormente:

Leia mais

Auditoria Avançada de Persistência com Hibernate, JPA e Envers

Auditoria Avançada de Persistência com Hibernate, JPA e Envers a r t i g o José Yoshiriro Ajisaka Ramos (jyoshiriro@gmail.com): bacharel em Sistema de Informação (IESAM). Mestrando em Ciência da Computação (UFPA). Instrutor na Equilibrium Web e na UAB. Engenheiro

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

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO UTILIZANDO O HIBERNATE Rafael Laurino GUERRA, Dra. Luciana Aparecida Martinez ZAINA Faculdade de Tecnologia de Indaiatuba FATEC-ID 1 RESUMO Este artigo apresenta

Leia mais

Hibernate Envers Easy Entity Auditing

Hibernate Envers Easy Entity Auditing Hibernate Envers Easy Entity Auditing Auditando suas classes de persistência com Hibernate Envers Castro (@CastroAlexandre) Consultor (Summa) e Instrutor (Globalcode) SCJP, SCWCD, SCBCD, SCEA-I, SCSNI

Leia mais

Java Persistence Query Language JPQL

Java Persistence Query Language JPQL Introdução SELECT FROM WHERE GROUP BY HAVING ORDER BY Java Persistence Query Language JPQL Prof. Enzo Seraphim Definições Tornar SQL orientado a objetos Classes e propriedades ao invés de Tabelas e colunas

Leia mais

JPA Java Persistence API. Prof. Ramon Chiara

JPA Java Persistence API. Prof. Ramon Chiara JPA Java Persistence API Prof. Ramon Chiara JDBC Java DataBase Connectivity Acesso a bancos de dados Independência de banco de dados JDBC Aplicação JDBC Driver Banco de Dados JDBC Java DataBase Connectivity

Leia mais

Linguagem de Consulta - SQL

Linguagem de Consulta - SQL SQL Structured Query Language Linguagem de Consulta Estruturada; Originou-se da linguagem SEQUEL (1974); Revisada e chamada de SQL em 1976/77; Em 1986, padronizada pelo ANSI/ISO - chamada SQL-86; Em 1987

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

DESENVOLVIMENTO DE SOFTWARE

DESENVOLVIMENTO DE SOFTWARE VARIAÁ VEL Antes de iniciarmos os comandos referentes a Banco de Dados, precisamos de uma breve descrição técnica sobre Variáveis que serão uma constante em programação seja qual for sua forma de leitura.

Leia mais

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda. SQL comando SELECT Uma das tarefas mais requisitadas em qualquer banco de dados é obter uma listagem de registros armazenados. Estas tarefas são executadas pelo comando SELECT Sintaxe: SELECT [DISTINCT]

Leia mais

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em

Leia mais

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate Luis Gustavo Zandarim Soares 1, Késsia Rita da Costa Marchi 1 1 Universidade Paranaense (Unipar) Paraná PR Brasil luisgustavo@live.co.uk,

Leia mais

Exercícios de Revisão Java Básico

Exercícios de Revisão Java Básico Exercícios de Revisão Java Básico (i) Programação básica (estruturada) 1) Faça um programa para calcular o valor das seguintes expressões: S 1 = 1 1 3 2 5 3 7 99... 4 50 S 2 = 21 50 22 49 23 48...250 1

Leia mais

Capítulo 1 - Java EE 6 por alto - 1

Capítulo 1 - Java EE 6 por alto - 1 Capítulo 1 - Java EE 6 por alto - 1 Um pouquinho de história - 2 Padrões - 4 Arquitetura - 4 Componentes - 5 Contentores - 6 Serviços - 7 Protocolos de rede - 9 Empacotamento - 9 Java Standard Edition

Leia mais

Aula 5. Carlos Eduardo de Carvalho Dantas (carloseduardocarvalhodantas@gmail.com)

Aula 5. Carlos Eduardo de Carvalho Dantas (carloseduardocarvalhodantas@gmail.com) Persistência com JDBC e JPA Aula 5 Carlos Eduardo de Carvalho Dantas (carloseduardocarvalhodantas@gmail.com) Quem é sábio procura aprender, mas os tolos estão satisfeitos com a sua própria ignorância..

Leia mais

Programação Java. em Ambiente Distribuído. Ênfase no Mapeamento Objeto-Relacional com JPA, EJB e Hibernate. Douglas Rocha Mendes.

Programação Java. em Ambiente Distribuído. Ênfase no Mapeamento Objeto-Relacional com JPA, EJB e Hibernate. Douglas Rocha Mendes. Programação Java em Ambiente Distribuído Ênfase no Mapeamento Objeto-Relacional com JPA, EJB e Hibernate Douglas Rocha Mendes Novatec Copyright 2011 da Novatec Editora Ltda. Todos os direitos reservados

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Curso: Engenharia de Software Arquitetura de Software Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 12 Consultas JPQL Consultas JPQL Consultas em JPQL

Leia mais

Curso PHP Aula 08. Bruno Falcão brunogfalcao@gmail.com

Curso PHP Aula 08. Bruno Falcão brunogfalcao@gmail.com + Curso PHP Aula 08 Bruno Falcão brunogfalcao@gmail.com + Roteiro Conectividade com BD SQL + SQL Structured Query Language. Padrão para interagir com banco de dados relacionais. + Banco de dados Um banco

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 2: Classes e objectos LEEC@IST Java 1/24 Classes (1) Sintaxe Qualif* class Ident [ extends IdentC] [ implements IdentI [,IdentI]* ] { [ Atributos Métodos ]* Qualif:

Leia mais

Figura 5 - Workflow para a Fase de Projeto

Figura 5 - Workflow para a Fase de Projeto 5. Fase de Projeto A Fase de Projeto caracteriza-se por transformar as informações modeladas durante a Fase de Análise em estruturas arquiteturais de projeto com o objetivo de viabilizar a implementação

Leia mais

PHP Programando com Orientação a Objetos

PHP Programando com Orientação a Objetos PHP Programando com Orientação a Objetos 2 a edição Pablo Dall Oglio Novatec Sumário Sobre o autor... 13 Agradecimentos... 14 Nota do autor... 16 Organização do livro... 18 Capítulo 1 Introdução ao PHP...

Leia mais

Desmistificando o Hibernate Envers em 10 passos

Desmistificando o Hibernate Envers em 10 passos _envers Desmistificando o Hibernate Envers em 10 passos Auditoria de dados? Registro de Log? Trilha de auditoria? Descubra como é fácil, através do Hibernate Envers, rastrear o histórico de mudanças e

Leia mais

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES CAPÍTULO 5 5 VETORES E MATRIZES 5.1 Vetores Um vetor armazena uma determinada quantidade de dados de mesmo tipo. Vamos supor o problema de encontrar a média de idade de 4 pessoas. O programa poderia ser:

Leia mais

Análise de Programação

Análise de Programação Análise de Programação Conceitos Avançados da Linguagem de Programação Java Prof Gilberto B Oliveira Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros

Leia mais

SQL - Criação de Tabelas

SQL - Criação de Tabelas SQL - Criação de Tabelas André Restivo Faculdade de Engenharia da Universidade do Porto February 24, 2012 André Restivo (FEUP) SQL - Criação de Tabelas February 24, 2012 1 / 25 Sumário 1 Introdução 2 Tabelas

Leia mais

Especificação do Trabalho

Especificação do Trabalho Especificação do Trabalho I. Introdução O objetivo deste trabalho é abordar a prática da programação orientada a objetos usando a linguagem Java envolvendo os conceitos de classe, objeto, associação, ligação,

Leia mais

Implementando uma Classe e Criando Objetos a partir dela

Implementando uma Classe e Criando Objetos a partir dela Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 04 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 2 Prof. Cristóvão Cunha Implementando uma Classe

Leia mais

Banco de Dados. Marcio de Carvalho Victorino www.dominandoti.eng.br. Exercícios SQL

Banco de Dados. Marcio de Carvalho Victorino www.dominandoti.eng.br. Exercícios SQL Banco de Dados Exercícios SQL 1 TRF (ESAF 2006) 32. Analise as seguintes afirmações relacionadas a Bancos de Dados e à linguagem SQL: I. A cláusula GROUP BY do comando SELECT é utilizada para dividir colunas

Leia mais

Struts 2 : Projeto e Programação Editora: Ciência Moderna Autor: Antunes Budi Kurniawan Número de páginas: 600

Struts 2 : Projeto e Programação Editora: Ciência Moderna Autor: Antunes Budi Kurniawan Número de páginas: 600 Objetivo Com enfoque totalmente prático permite que programadores Java possam ampliar seus conhecimentos no mundo Web na criação de sistemas profissionais. Utilizar os modelos de programação com Servlets,

Leia mais

Persistência com JPA2 e Hibernate TREINAMENTOS

Persistência com JPA2 e Hibernate TREINAMENTOS Persistência com JPA2 e Hibernate TREINAMENTOS Persistência com JPA 2 e Hibernate 18 de junho de 2012 Sumário i Sobre a K19 1 Seguro Treinamento 2 Termo de Uso 3 Cursos 4 1 Introdução 1 1.1 Persistência.............................................

Leia mais

JPA - Java Persistence API. Entity. Entity Campos e Propriedades Entity Chaves Primárias Entity Associações. Entity Manager

JPA - Java Persistence API. Entity. Entity Campos e Propriedades Entity Chaves Primárias Entity Associações. Entity Manager JPA - Java Persistence API Entity Entity Campos e Propriedades Entity Chaves Primárias Entity Associações Entity Manager Entity Manager API Java Persistence Query Language (JPQL) Persistence Units 1 Java

Leia mais

JPA - Java Persistence API. Entity. Entity Campos e Propriedades Entity Chaves Primárias Entity Associações. Entity Manager

JPA - Java Persistence API. Entity. Entity Campos e Propriedades Entity Chaves Primárias Entity Associações. Entity Manager JPA - Java Persistence API Entity Entity Campos e Propriedades Entity Chaves Primárias Entity Associações Entity Manager Entity Manager API Java Persistence Query Language (JPQL) Persistence Units 1 Java

Leia mais

Banco de Dados I 2007. Módulo V: Indexação em Banco de Dados. (Aulas 4) Clodis Boscarioli

Banco de Dados I 2007. Módulo V: Indexação em Banco de Dados. (Aulas 4) Clodis Boscarioli Banco de Dados I 2007 Módulo V: Indexação em Banco de Dados (Aulas 4) Clodis Boscarioli Agenda: Indexação em SQL; Vantagens e Custo dos Índices; Indexação no PostgreSQL; Dicas Práticas. Índice em SQL Sintaxe:

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

2008.1. A linguagem SQL

2008.1. A linguagem SQL SQL 2008.1 A linguagem SQL SQL - Structured Query Language. Foi definida nos laboratórios de pesquisa da IBM em San Jose, California, em 1974. Teve seus fundamentos no modelo relacional Sua primeira versão

Leia mais

Java Beans e Servlets

Java Beans e Servlets 6 Java Beans e Servlets Prof. Autor: Daniel Morais dos Reis e-tec Brasil Programação Avançada Para Web Página1 Meta Apresentar os recursos de orientação à objetos Java em JSP e integrá-los a 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

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

Curso de Java. Acesso a banco de dados através do Hibernate. Todos os direitos reservados Klais Curso de Java Acesso a banco de dados através do Hibernate Todos os direitos reservados Klais Motivação Java é uma linguagem orientada a objetos: Numa aplicação, o uso de objetos é um recurso importante

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

SISTEMA TYR DIAGRAMAS DE CLASSE E SEQUÊNCIA Empresa: Academia Universitária

SISTEMA TYR DIAGRAMAS DE CLASSE E SEQUÊNCIA Empresa: Academia Universitária SISTEMA TYR DIAGRAMAS DE CLASSE E SEQUÊNCIA Empresa: Academia Universitária Cascavel Novembro de 2009 Pedro Patitucci Finamore Daniel Bordignon Cassanelli Marco Antonio da Rosa DIAGRAMAS DE CLASSE E SEQUÊNCIA

Leia mais

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Introdução à Engenharia da Computação. Banco de Dados Professor Machado Introdução à Engenharia da Computação Banco de Dados Professor Machado 1 Sistemas isolados Produção Vendas Compras Banco de Dados Produtos... Banco de Dados Produtos... Banco de Dados Produtos... Desvantagens:

Leia mais

J550 Integração com Bancos de Dados

J550 Integração com Bancos de Dados J550 Integração com Bancos de Dados Helder da Rocha (helder@acm.org) www.argonavis.com.br 1 Objetivos Este módulo apresenta estratégias para conectar servlets com a camada de dados usando um DAO - Data

Leia mais

PHP INTEGRAÇÃO COM MYSQL PARTE 1

PHP INTEGRAÇÃO COM MYSQL PARTE 1 INTRODUÇÃO PHP INTEGRAÇÃO COM MYSQL PARTE 1 Leonardo Pereira leonardo@estudandoti.com.br Facebook: leongamerti http://www.estudandoti.com.br Informações que precisam ser manipuladas com mais segurança

Leia mais

Modelo Relacional. 2. Modelo Relacional (Lógico)

Modelo Relacional. 2. Modelo Relacional (Lógico) Modelo Relacional 2. Modelo Relacional (Lógico) Derivado do modelo conceitual; Depende do SGBD escolhido; Independe dos dispositivos de armazenamento; Primitivas: tabelas, linhas e colunas; Transformação

Leia mais

1. Domínio dos Atributos

1. Domínio dos Atributos Structure Query Language SQL Guilherme Pontes lf.pontes.sites.uol.com.br 1. Domínio dos Atributos Por domínio, ou tipo, pode-se entender como a maneira como determinado atributo (ou campo, se tratando

Leia mais

Capítulo 8. Introdução UML

Capítulo 8. Introdução UML Capítulo 8. Introdução UML 1/42 Índice Indice 8.1 - Introdução UML 8.2 - Modelação estrutural 8.2.1 - Representação de classes e objectos 8.2.2 - Relações entre objectos 8.2-3 - Relações de associação

Leia mais

3.1 Definições Uma classe é a descrição de um tipo de objeto.

3.1 Definições Uma classe é a descrição de um tipo de objeto. Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Classes Autoria:Aristófanes Corrêa Silva Adaptação:

Leia mais

HIBERNATE EM APLICAÇÃO JAVA WEB

HIBERNATE EM APLICAÇÃO JAVA WEB HIBERNATE EM APLICAÇÃO JAVA WEB Raul Victtor Barbosa Claudino¹, Ricardo Ribeiro Rufino¹ ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil victtor.claudino@gmail.com, ricardo@unipar.br Resumo: Este

Leia mais

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Linguagem de Definição 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 Ingress SQL

Leia mais

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

Introdução ao Paradigma Orientado a Objetos. Principais conceitos Introdução ao Paradigma Orientado a Objetos Principais conceitos Paradigmas de Programação PROGRAMAÇÃO ESTRUTURADA X PROGRAMAÇÃO ORIENTADA A OBJETOS Paradigma Programação estruturada Na programação estrutura

Leia mais

ÍNDICE. Delphi... 3 CAPÍTULO 1 INTRODUÇÃO... 06 CAPÍTULO 2 INSTALANDO O DELPHI... 10

ÍNDICE. Delphi... 3 CAPÍTULO 1 INTRODUÇÃO... 06 CAPÍTULO 2 INSTALANDO O DELPHI... 10 Delphi 7 ÍNDICE CAPÍTULO 1 INTRODUÇÃO... 06 CAPÍTULO 2 INSTALANDO O DELPHI... 10 CAPÍTULO 3 INICIANDO O Delphi... 18 FORM DESIGN... 19 CODE EDITOR... 23 OBJECT INSPECTOR... 26 OBJECT TREE VIEW... 29 PALHETA

Leia mais

Banco de Dados. Um momento crucial na organização dos dados é a forma com que cadastramos estes dados, a estrutura de armazenamento que criamos.

Banco de Dados. Um momento crucial na organização dos dados é a forma com que cadastramos estes dados, a estrutura de armazenamento que criamos. Banco de Dados O que é um Banco de Dados? Este assunto é muito vasto, tentaremos resumi-lo para atender as questões encontradas em concursos públicos. Já conhecemos o conceito de dado, ou seja, uma informação

Leia mais

Banco de Dados Oracle 10g: Introdução à Linguagem SQL

Banco de Dados Oracle 10g: Introdução à Linguagem SQL Oracle University Entre em contato: 0800 891 6502 Banco de Dados Oracle 10g: Introdução à Linguagem SQL Duração: 5 Dias Objetivos do Curso Esta classe se aplica aos usuários do Banco de Dados Oracle8i,

Leia mais

Criar uma aplicação JPA2 com EclipseLink e H2

Criar uma aplicação JPA2 com EclipseLink e H2 Criar uma aplicação JPA2 com EclipseLink e H2 1) Criar uma aplicação Java no NetBeans. File > New Project > Java, Java Application > Project name: JPA2 Finish. 2) Acrescentar ao Projeto NetBeans a biblioteca

Leia mais

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC Módulo 5 No módulo anterior adaptamos nosso projeto para persistir as informações no banco de dados utilizando as facilidades da extensão demoiselle-jpa. Experimentamos o controle transacional do Framework

Leia mais

Mapeamento Objeto-Relacional

Mapeamento Objeto-Relacional Mapeamento Objeto-Relacional Persistência de dados com Java Persistence API - Hibernate Jefferson S Silva Mapeamento objeto-relacional Mas como? SQL + JDBC!? 1 Para quê serve MOR? O uso de uma solução

Leia mais

Programação Orientada a Objetos (DPADF 0063)

Programação Orientada a Objetos (DPADF 0063) Programação Orientada a Objetos (DPADF 0063) Aula 9 JDBC (Java Database Connectivity) Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas

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

Banco de Dados. Profª. Ana Leda

Banco de Dados. Profª. Ana Leda Banco de Dados Profª. Ana Leda Introdução 1 DADO PROCESSAMENTO INFORMAÇÃO 2 Dados x Informação DADO = REPRESENTAÇÃO DE UM FATO, OBJETO, EVENTO, PESSOA, ETC. ENTIDADE = FATO, OBJETO, EVENTO, PESSOA, ETC,

Leia mais

SOP - TADS Sistemas de Arquivos Cap 4 Tanenmbaum

SOP - TADS Sistemas de Arquivos Cap 4 Tanenmbaum SOP - TADS Sistemas de Arquivos Cap 4 Tanenmbaum Prof. Ricardo José Pfitscher dcc2rjp@joinville.udesc.br Material cedido por: Prof. Rafael Rodrigues Obelheiro Prof. Maurício Aronne Pillon Cronograma Introdução

Leia mais

PROJETO PEDAGÓGICO DE CURSOS

PROJETO PEDAGÓGICO DE CURSOS 1 de 6 PROJETO PEDAGÓGICO DE CURSOS BURITREINAMENTOS MANAUS-AM MARÇO / 2015 2 de 6 PACOTES DE TREINAMENTOS BURITECH A Buritech desenvolveu um grupo de pacotes de treinamentos, aqui chamados de BuriPacks,

Leia mais

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

AULA 2 INTERAÇÃO COM O BANCO DE DADOS AULA 2 INTERAÇÃO COM O BANCO DE DADOS BANCO DE DADOS POSTGRESQL O PostgreSQL é um sistema gerenciador de banco de dados dos mais robustos e avançados do mundo. Seu código é aberto e é totalmente gratuito,

Leia mais

MANIPULANDO BANCO DE DADOS NO POSTGRESQL SEM FAZER USO DE COMANDOS SQL

MANIPULANDO BANCO DE DADOS NO POSTGRESQL SEM FAZER USO DE COMANDOS SQL MANIPULANDO BANCO DE DADOS NO POSTGRESQL SEM FAZER USO DE COMANDOS SQL INTRODUÇÃO: O PostgreSQL é um dos mais populares e avançados sistemas gerenciadores de banco de dados (SGBD) com código aberto. É

Leia mais

2008.1 SQL. Autor: Renata Viegas

2008.1 SQL. Autor: Renata Viegas SQL Autor: Renata Viegas A linguagem SQL SQL - Structured Query Language. Foi definida nos laboratórios de pesquisa da IBM em San Jose, California, em 1974. Teve seus fundamentos no modelo relacional Sua

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

Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br Programação com acesso a BD Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br 1 Modelos de Dados, Esquemas e Instâncias 2 Modelos de Dados, Esquemas e Instâncias Modelo de dados: Conjunto de conceitos

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

Etc & Tal. Volume 2 - Número 1 - Abril 2009 SBC HORIZONTES 44

Etc & Tal. Volume 2 - Número 1 - Abril 2009 SBC HORIZONTES 44 Armazenando Dados em Aplicações Java Parte 2 de 3: Apresentando as opções Hua Lin Chang Costa, hualin@cos.ufrj.br, COPPE/UFRJ. Leonardo Gresta Paulino Murta, leomurta@ic.uff.br, IC/UFF. Vanessa Braganholo,

Leia mais

Banco de Dados. Prof. Leonardo Barreto Campos 1

Banco de Dados. Prof. Leonardo Barreto Campos 1 Banco de Dados Prof. Leonardo Barreto Campos 1 Sumário Introdução; Banco de Dados Relacionais; SQL; MySQL; Manipulando Banco de Dados com o JDBC; Bibliografia; Prof. Leonardo Barreto Campos 2/25 Introduçã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

Disciplina de Banco de Dados Parte V

Disciplina de Banco de Dados Parte V Disciplina de Banco de Dados Parte V Prof. Elisa Maria Pivetta CAFW - UFSM Modelo de Dado Relacional O Modelo Relacional O Modelo ER é independente do SGDB portanto, deve ser o primeiro modelo gerado após

Leia mais

Usando PostgreSQL na Regra de Negócio de um ERP. Fabiano Machado Dias Eduardo Wolak

Usando PostgreSQL na Regra de Negócio de um ERP. Fabiano Machado Dias Eduardo Wolak Usando PostgreSQL na Regra de Negócio de um ERP Fabiano Machado Dias Eduardo Wolak Regra de negócio? São todas as regras existentes num sistema de informação, que ditam seu comportamento, suas restrições

Leia mais

Tipos de dados complexos e objectos Tipos de dados estruturados e herança em SQL Herança de tabelas Matrizes e multi-conjuntos em SQL Identidade de

Tipos de dados complexos e objectos Tipos de dados estruturados e herança em SQL Herança de tabelas Matrizes e multi-conjuntos em SQL Identidade de Capítulo 8: BDs Objecto-Relacional Tipos de dados complexos e objectos Tipos de dados estruturados e herança em SQL Herança de tabelas Matrizes e multi-conjuntos em SQL Identidade de Objectos e Referência

Leia mais

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse Como criar um EJB Criando um projeto EJB com um cliente WEB no Eclipse Gabriel Novais Amorim Abril/2014 Este tutorial apresenta o passo a passo para se criar um projeto EJB no Eclipse com um cliente web

Leia mais