A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 1 / 48 Programação de Sistemas e Bancos de Dados Belém,

Apresentações semelhantes


Apresentação em tema: "Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 1 / 48 Programação de Sistemas e Bancos de Dados Belém,"— Transcrição da apresentação:

1 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 1 / 48 Programação de Sistemas e Bancos de Dados Belém, novembro de 2012 Pós-graduação em Banco de Dados para Mercados Corporativos Daniel Henriques Moreira Daniel Henriques Moreira Ferramentas e Tecnologias II

2 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 2 / 48 Demoiselle (1/5) Sítio –http://www.frameworkdemoiselle.gov.br/http://www.frameworkdemoiselle.gov.br/ Definição –Framework de integração de várias tecnologias e padrões de desenvolvimento na plataforma Java. Baseado em código aberto.

3 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 3 / 48 Demoiselle (2/5) Histórico –Desenvolvido pelo Serpro desde 2008, com o objetivo de, dentro da empresa: Padronizar as soluções desenvolvidas em Java –Uso de arquitetura em camadas; –Sugestão de bibliotecas de código aberto (com indicação de versão) para resolver determinados tipos de problemas. –Desenvolvimento ainda coordenado pelo Serpro, mas aberto à participação de desenvolvedores independentes; –Versão atual:

4 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 4 / 48 Demoiselle (3/5) Características (úteis ao módulo) (1/2) –Desenvolvimento de aplicações independentes de interface Aplicações web podem utilizar JSF 2; –Desenvolvimento de aplicações independentes de banco de dados Uso de JPA 2.

5 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 5 / 48 Demoiselle (4/5) Características (úteis ao módulo) (2/2) –Utilização de padrões de arquitetura em camadas Camada de persistência –Objetos de acesso aos dados (data access objects - DAO). Camada de negócios –Controladores de negócio (business controllers - BC). Camada de visão –Objetos visuais (visual objects - VO); –Managed Beans (MB) »Classes de objetos que integram código Java às páginas HTML. –Páginas HTML. Domínio de entidades –Classes do modelo de dados do problema.

6 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 6 / 48 Demoiselle (5/5) Instalação –Catálogo de arquétipos de projetos Maven, aplicado no Eclipse catalog.xmlhttp://demoiselle.sourceforge.net/repository/archetype- catalog.xml

7 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 7 / 48 JPA 2 (1/43) Sítio (JSR 317) –http://jcp.org/en/jsr/detail?id=317http://jcp.org/en/jsr/detail?id=317 Definição –API capaz de tomar dados orientados a objetos escritos em Java, e persisti-los em tabelas do modelo relacional. Histórico –JSR 220, em maio de 2006, definiu o JPA 1.0; –Versão atual: 2.0.

8 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 8 / 48 JPA 2 (2/43) Providers –Implementações da JSR 317; –Exemplos OpenJPA - EclipseLink - Hibernate - –Utilizado no módulo. Instalação? –Neste módulo, incluída nos projetos em fase de desenvolvimento, por meio de arquétipo Maven.

9 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 9 / 48 JPA 2 (3/43) Entidades (Entities) (1/2) –Classes do modelo de dados do problema que devem ser persistidas; –Geridas pelo provider utilizado, quanto à sua persistência;

10 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 10 / 48 JPA 2 (4/43) Entidades (Entities) (2/2) –Ciclo de vida das entidades

11 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 11 / 48 JPA 2 (5/43) Mapeamento objeto-relacional (1/31) –Entidades são anotadas, de modo a configurar o mapeamento; –Anotando ") Marca uma classe do modelo de dados como uma entidade; Define o nome da tabela, no BD, que persistirá objetos desta classe (item name). Aplicação –Antes da declaração da classe.

12 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 12 / 48 JPA 2 (6/43) Mapeamento objeto-relacional (2/31) –Anotando Identidade Determina qual atributo da classe servirá como chave primária em sua tabela de persistência; Aplicação –Antes do atributo que servirá de chave-primária.

13 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 13 / 48 JPA 2 (7/43) Mapeamento objeto-relacional (3/31) –Anotando Identidade (2/2) Co-anotação »Indica que o id será gerado automaticamente pelo sistema; »Utilizado para ids que não fazem parte do modelo de dados do problema; »Aplicação Antes do atributo que servirá de chave-primária.

14 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 14 / 48 JPA 2 (8/43) Mapeamento objeto-relacional (4/31) –Anotando Atributos Simples Indica em qual coluna da tabela de persistência o atributo será armazenado. Utilizado para atributos de tipo básico –String, Date, Integer, Long, Byte, Float, etc. Aplicação –Antes do atributo a ser persistido.

15 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 15 / 48 JPA 2 (9/43) Mapeamento objeto-relacional (5/31) –Anotando Atributos Simples name=" ", unique=, nullable=, insertable=, updatable=, length=, precision= scale= )

16 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 16 / 48 JPA 2 (10/43) Mapeamento objeto-relacional (6/31) –Ignorando Indica que um determinado atributo não será persistido na tabela da classe; Aplicação –Antes do atributo ignorado.

17 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 17 / 48 JPA 2 (11/43) Mapeamento objeto-relacional (7/31) –Anotando Herança (1/8) Estratégias –Single table; –Joined Subclasses; –Mapped Superclasses.

18 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 18 / 48 JPA 2 (12/43) Mapeamento objeto-relacional (8/31) –Anotando Herança (2/8) Estratégia Single Table strategy=InheritanceType.SINGLE_TABLE) –Aplicação »Antes da definição da superclasse mais genérica. –Uma única tabela contém todos os atributos de todas as subclasses e superclasses; –Uma coluna a mais, discriminatória, é utilizada para determinar a classe de cada linha.

19 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 19 / 48 JPA 2 (13/43) Mapeamento objeto-relacional (9/31) –Anotando Herança (3/8) Estratégia Single Table (2/3) name=" ", discriminatorType=DiscriminatorType.STRING) »Determina a coluna discriminatória da classe de cada linha; »Aplicação Antes da definição da superclasse mais genérica.

20 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 20 / 48 JPA 2 (14/43) Mapeamento objeto-relacional (10/31) –Anotando Herança (4/8) Estratégia Single Table (3/3) " ") »Determina o valor da coluna discriminatória para classe anotada em questão; »Aplicação Antes da definição de cada classe não-abstrata da hierarquia.

21 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 21 / 48 JPA 2 (15/43) Mapeamento objeto-relacional (11/31) –Anotando Herança (5/8) Estratégia Joined Subclasses strategy=InheritanceType.JOINED) –Aplicação »Antes da definição da superclasse mais genérica. –Cada classe na hierarquia tem sua tabela; –Os atributos ocorrem apenas na tabela da classe em que foram declarados; –Uma subclasse sabe sua superclasse imediata por meio de uma chave estrangeira.

22 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 22 / 48 JPA 2 (16/43) Mapeamento objeto-relacional (12/31) –Anotando Herança (6/8) Estratégia Joined Subclasses (2/2) name=" ", referencedColumnName=" ") –Aplicação »Antes da definição de cada subclasse não-abstrata; –Determina, na tabela da subclasse, qual a coluna (discriminada no item name) que serve de chave estrangeira para uma coluna da superclasse (discriminada no item referencedColumnName).

23 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 23 / 48 JPA 2 (17/43) Mapeamento objeto-relacional (13/31) –Anotando Herança (7/8) Estratégia Mapped –Apenas as subclasses possuem tabelas; –Os atributos da superclasse anotada são replicados para todas as tabelas das subclasses; –Aplicação »Antes da definição da superclasse que não deve possuir tabela.

24 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 24 / 48 JPA 2 (18/43) Mapeamento objeto-relacional (14/31) –Anotando Herança (8/8) Limitação –Em uma mesma hierarquia de superclasses e subclasses (mesma linhagem), não se podem misturar estratégias diversas de mapeamento de herança.

25 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 25 / 48 JPA 2 (19/43) Mapeamento objeto-relacional (15/31) –Anotando Relacionamentos (1/16) Conceitos Básicos (1/4) –Cascateamento de operações (1/3) »Operar sobre uma entidade implica em propagar a operação sobre as entidades relacionadas;

26 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 26 / 48 JPA 2 (20/43) Mapeamento objeto-relacional (16/31) –Anotando Relacionamentos (2/16) Conceitos Básicos (2/4) –Cascateamento de operações (2/3) »Operações refresh(); persist(); remove(); merge().

27 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 27 / 48 JPA 2 (21/43) Mapeamento objeto-relacional (17/31) –Anotando Relacionamentos (3/16) Conceitos Básicos (3/4) –Cascateamento de operações (3/3) »Tipos REFRESH- refresh() propagado; PERSIST- persist() propagado; REMOVE- remove() propagado; MERGE- merge() propagado; DETACH- destacamento propagado; ALL- todas as operações propagadas.

28 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 28 / 48 JPA 2 (22/43) Mapeamento objeto-relacional (18/31) –Anotando Relacionamentos (4/16) Conceitos Básicos (4/4) –Carregamento de Entidades Relacionadas na Memória (fetch) »Tipos EAGER– entidades relacionadas são carregadas em memória juntamente com a entidade recuperada do BD. LAZY– entidades relacionadas são carregadas em memória somente quanto acessadas por algum método Java.

29 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 29 / 48 JPA 2 (23/43) Mapeamento objeto-relacional (19/31) –Anotando Relacionamentos (1/3) –Aplicação »Antes da declaração da entidade relacionada. cascade = CascadeType.ALL | {CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE, (...)}, fetch = [FetchType.EAGER | FetchType.LAZY], optional = [true | false] )

30 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 30 / 48 JPA 2 (24/43) Mapeamento objeto-relacional (20/31) –Anotando Relacionamentos (2/3) Unidirecional –Apenas o lado que acessa a outra entidade pode ser anotado; =, referencedColumnName = ) »Aplicação Antes da declaração da entidade relacionada. »Determina, na tabela da entidade corrente, qual a coluna (discriminada no item name) que serve de chave estrangeira para uma coluna da outra entidade relacionada (discriminada no item referencedColumnName).

31 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 31 / 48 JPA 2 (25/43) Mapeamento objeto-relacional (21/31) –Anotando Relacionamentos (3/3) Bidirecional –Lado que possui a coluna com a chave estrangeira recebe a e ; –Outro lado recebe apenas a com item mapped-by = cascade = CascadeType.ALL, fecth = FetchType.LAZY, optional = true, mappedBy = )

32 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 32 / 48 JPA 2 (26/43) Mapeamento objeto-relacional (22/31) –Anotando Relacionamentos (1/3) –Aplicação »Antes da declaração da coleção da entidade relacionada. cascade = CascadeType.ALL | {CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE, (...)}, fetch = [FetchType.EAGER | FetchType.LAZY] )

33 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 33 / 48 JPA 2 (27/43) Mapeamento objeto-relacional (23/31) –Anotando Relacionamentos (2/3) Unidirecional –Apenas o lado que acessa a coleção da outra entidade pode ser anotado; =, referencedColumnName = ) »Aplicação Antes da declaração da coleção da entidade relacionada. »Determina, na tabela da entidade relacionada, qual a coluna (discriminada no item name) que serve de chave estrangeira para uma coluna da entidade corrente (discriminada no item referencedColumnName).

34 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 34 / 48 JPA 2 (28/43) Mapeamento objeto-relacional (24/31) –Anotando Relacionamentos (3/3) Bidirecional –Apenas o lado que acessa a coleção da outra entidade pode ser anotado; é acrescida com o item mapped-by = cascade = CascadeType.ALL, fecth = FetchType.LAZY, mappedBy = )

35 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 35 / 48 JPA 2 (29/43) Mapeamento objeto-relacional (25/31) –Anotando Relacionamentos (1/2) –Aplicação »Antes da declaração da entidade relacionada. cascade = CascadeType.ALL | {CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE, (...)}, fetch = [FetchType.EAGER | FetchType.LAZY], optional = [true | false] )

36 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 36 / 48 JPA 2 (30/43) Mapeamento objeto-relacional (26/31) –Anotando Relacionamentos (2/2) =, referencedColumnName = ) »Aplicação Antes da declaração da entidade relacionada. »Determina, na tabela da entidade corrente, qual a coluna (discriminada no item name) que serve de chave estrangeira para uma coluna da outra entidade relacionada (discriminada no item referencedColumnName).

37 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 37 / 48 JPA 2 (31/43) Mapeamento objeto-relacional (27/31) –Anotando Relacionamentos (1/4) –Aplicação »Antes da declaração da coleção da entidade relacionada. cascade = CascadeType.ALL | {CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE, (...)}, fetch = [FetchType.EAGER | FetchType.LAZY] )

38 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 38 / 48 JPA 2 (32/43) Mapeamento objeto-relacional (28/31) –Anotando Relacionamentos (2/4) –Lado Dominante e Lado Inverso »Lado Dominante (owner) Lado em que a propagação de operações é efetuada. »Lado Inverso (inverse) Lado em que a propagação de operações é ignorada.

39 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 39 / 48 JPA 2 (33/43) Mapeamento objeto-relacional (29/31) –Anotando Relacionamentos (3/4) Unidirecional –Apenas o lado dominante pode ser anotado; =, joinColumns = ), inverseJoinColumns =

40 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 40 / 48 JPA 2 (34/43) Mapeamento objeto-relacional (30/31) –Anotando Relacionamentos (4/4) Bidirecional –Lado dominante recebe a e co- ; –Lado inverso recebe apenas a com item mapped-by = cascade = CascadeType.ALL, fecth = FetchType.LAZY, mappedBy = )

41 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 41 / 48 JPA 2 (35/43) Mapeamento objeto-relacional (31/31) –Referência oficial do Hibernate html/entity.htmlhttp://docs.jboss.org/hibernate/annotations/3.5/reference/en/ html/entity.html

42 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 42 / 48 JPA 2 (36/43) Ajuste dos JavaBeans –JavaBeans Classes Java do domínio do problema; Atributos de acesso privado; Métodos getters e setters para todos os atributos; Método construtor sem parâmetros. –Implementação da interface java.io.Serializable Objetos podem ser convertidos em streams de bytes –Transferência; –Persistência. Inclusão do atributo serialVersionUID –Número de controle da versão da classe do objeto eventualmente serializado.

43 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 43 / 48 JPA 2 (37/43) Configuração da Persistência (1/3) –Arquivo persistence.xml (1/2) Arquivo de configuração do JPA; Define a unidade de persistência das entidades –Controle transacional utilizado ( transaction-type ) »JTA (servidor de aplicação contém biblioteca que controla as transações); »RESOURCE_LOCAL (desenvolvedor define classe de controle transacional, relatada no arquivo beans.xml). –Provider JPA utilizado; –Lista de entidades persistidas; –Propriedades da conexão com o BD »Driver de acesso; »Usuário; »Senha; »URL; »Etc.

44 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 44 / 48 JPA 2 (38/43) Configuração da Persistência (2/3) –Arquivo persistence.xml (2/2) Exemplo org.hibernate.ejb.HibernatePersistence pessoal.treinamento.domain.Bookmark

45 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 45 / 48 JPA 2 (39/43) Configuração da Persistência (3/3) –Arquivo beans.xml Biblioteca de beans utilizados no projeto; Tag –Possibilidade de incluir bean utilizado no controle transacional. Exemplo br.gov.frameworkdemoiselle.transaction.JPATransaction

46 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 46 / 48 JPA 2 (40/43) Conexão com o SGBD Oracle (1/3) –Instalação da API conectora (1/2) Download no sítio da Oracle, com necessidade de cadastramento –Biblioteca proprietária; –http://www.oracle.com/technetwork/database/features/jdbc/inde x htmlhttp://www.oracle.com/technetwork/database/features/jdbc/inde x html

47 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 47 / 48 JPA 2 (42/43) Conexão com o SGBD Oracle (2/3) –Instalação da API conectora (2/2) Adição à gestão do Maven –Cópia do jar da API para a pasta de bibliotecas do projeto »src/main/webapp/WEB-INF/lib –Inclusão da dependência no POM do projeto »Exemplo (...) com.oracle ojdbc 14 system ${basedir}/src/main/webapp/WEB-INF/lib/ojdbc14.jar

48 Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 48 / 48 JPA 2 (43/43) Conexão com o SGBD Oracle (3/3) –Configuração da JPA Ajuste do arquivo persistence.xml –Exemplo (...)


Carregar ppt "Pós-graduação em Banco de Dados para Mercados Corporativos Programação de Sistemas e Bancos de Dados 1 / 48 Programação de Sistemas e Bancos de Dados Belém,"

Apresentações semelhantes


Anúncios Google