Mostrar mensagens com a etiqueta Ferramentas ORM. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Ferramentas ORM. Mostrar todas as mensagens

quarta-feira, 11 de março de 2015

Exemplo de utilização do Java Persistence API - 2

Num artigo anterior criámos, no NetBeans, um projeto para acesso a uma BD ORACLE utilizando a Java Persistence API (JPA).
Entre esse e este artigo tivemos ainda tempo para resolver o problema da gestão de atribuição de chaves primárias no JPA sobre ORACLE.
Vamos, aqui, criar um projeto uma camada acima do anterior, que fornecerá para uma outra camada, de apresentação ou user interface, acima, um conjunto de serviços de lógica de negócio.
A camada de lógica de negócio aqui apresentada é apenas um exemplo possível. O objetivo é concentrar nesta camada os métodos que usam o JPA, de forma a libertar a camada acima (User Interface) desse conhecimento.

Começamos por criar um novo projeto de tipo Java Class Library, tal como anteriormente, e teremos que adicionar às suas Libraries, o projeto DAL feito no  artigo anterior.

Depois, criamos uma classe de apoio, BLLEntityManager.java, para nos fornecer o EntityManager (singleton), e iniciar alterações a objetos geridos (instâncias de JPA Entities já armazenadas na BD).

Gestão de atribuição de chaves primárias - ORACLE / JPA

No artigo anterior, usámos o JPA para criar uma camada de acesso a uma BD ORACLE.
A BD ORACLE, cuja criação foi tratada em "Exemplo de Aplicação Java Swing com BD Oracle - 1", usa sequências e triggers para atribuição automática da chave em cada tabela.

O JPA permite-nos fazer operações sobre a BD (criar, alterar, apagar ou selecionar registos das tabelas). No entanto, quando queremos fazer várias operações relacionadas, e precisamos de saber que chave foi atribuída pela BD a um dado registo criado anteriormente, cujo objeto ainda temos em memória, não temos maneira segura de conhecer o valor dessa chave. E, o objeto que ainda temos em memória permanece sem o valor da chave nos seus atributos, fazendo com que o JPA considere que essa instância não é gerida por si. Isto, impede-nos de usar essa instância para operações subsequentes com a BD.

O ORACLE, tipicamente usa sequências para atribuição de valores de chave primária nas suas tabelas.
A utilização dessas sequências na atribuição da chave primária pode fazer-se definindo um default value para a coluna respetiva, ou criando um trigger before insert o qual obtém o valor seguinte da sequência e o atribui à coluna da chave primária da tabela.

domingo, 8 de março de 2015

Exemplo de utilização do Java Persistence API - 1

Neste artigo vamos criar um projeto Java Class Library, usando o NetBeans, para acesso a uma BD ORACLE, usando o Java Persistence API (JPA).
Para criar a BD ORACLE pode seguir-se, por exemplo, este artigo.

No NetBeans, criamos um novo projeto de tipo "Java Class Library":


 Atribuimos um nome ao projeto:


O nosso novo projeto aparecerá como se segue, na janela de visualização de projetos do NetBeans:


Depois, queremos criar as classes Entidade a partir das tabelas já criadas na nossa base de dados ORACLE. Acedemos a New File --> Other e selecionamos, na categoria Persistence, o tipo de ficheiro "Entity Classes from Database":

terça-feira, 17 de abril de 2012

Utilização do Hibernate para Java - 2

No artigo anterior vimos como utilizar o Hibernate como camada de middleware entre a estrutura de classes do nosso programa Java e a representação das instâncias dessas classes numa base de dados.

O artigo anterior ilustrou o mapeamento entre uma classe Java e uma tabela da BD, nomeadamente a classe Book e a tabela com o mesmo nome.

Vamos hoje ver como mapear os relacionamentos entre classes, 1-para-N e N-para-N, para a base de dados.

Vamos começar por acrescentar ao nosso modelo (que apenas tinha a classe Book) duas novas classes:
     - BookCopy (Um Book contém a informação de um livro, e relaciona-se com vários BookCopy, que correspondem aos exemplares que uma biblioteca tem desse livro) --> relação 1-N.
     - Author (Um Book tem vários Author e vice-versa) --> relação N-N.


No projeto Java desenvolvido no post anterior, vamos começar por acrescentar a classe BookCopy e o respetivo ficheiro de mapeamento do Hibernate BookCopy.hbm.xml.

domingo, 15 de abril de 2012

Utilização do Hibernate para Java - 1


O Hibernate é um framework para o mapeamento objeto-relacional (object-relational mapping) para a linguagem Java. Facilita o mapeamento das classes, atributos e relacionamentos entre classes entre o modelo de classes de uma aplicação e a sua implementação numa BD relacional. Para definição dos mapeamentos são usados ficheiros XML ou anotações Java.
O Hibernate serve de middleware entre os objetos Java e a BD relacional.

Neste artigo, e no próximo, vamos usar a versão Hibernate 3 para ilustrar, com um pequeno exemplo, a utilização do Hibernate num programa Java.

Como sistema de BD vamos usar o Oracle 10g.

Para começar, temos que criar as tabelas da base de dados. No artigo Exemplo de Aplicação Java Swing com BD Oracle - 1 é explicado este processo.
Vamos, neste artigo, mapear apenas a classe BOOK.


 Depois, usando o Netbeans ou outro IDE para Java, criamos uma nova aplicação Java:


Criamos um package para as classes que correspondem às tabelas da BD e criamos a classe Book:





terça-feira, 3 de janeiro de 2012

Começar a usar o .Net Entity Framework - 3


Este artigo ilustra a utilização do ADO.Net Entity Framework na criação, actualização e eliminação de registos de dados.

Este artigo vem na sequência de:

onde vimos como criar um modelo de dados (ADO.Net Entity Data Model) a partir de uma base de dados já existente, e como usar esse modelo, num pequeno exemplo ilustrativo, para consulta da base de dados e preenchimento de uma comboBox.

Pegando no mesmo exemplo, acrescentámos à Form1 mais uma label, para visualizar o ID de cada registo, e uma caixa de texto, para podermos alterar o nome do país ou criar um novo país.



Foram também acrescentados botões para Criar Novo, Alterar e Apagar um país da tabela, e um botão Cancelar, que fecha a janela da aplicação.

Para começar, acrescentámos no handler que trata da selecção de uma nova linha da comboBox o código necessário para preencher a label (label1) com o ID do país, e a caixa de texto (paisTextBox) com o nome do país. Isto permite ao utilizador editar o nome actual de um país, para o poder alterar, ou inserir um novo nome, para criar um novo país na tabela.

        private void paisesBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            label1.Text = paisesBox1.SelectedValue.ToString();
            //paisTextBox.Text = paisesBox1.SelectedText;
            paisAtual = (Pais)paisesBox1.SelectedItem;
            paisTextBox.Text = paisAtual.nome;
        }

sábado, 24 de dezembro de 2011

Ferramentas de Mapeamento Objecto-Relacional

Ferramentas de mapeamento Objecto-Relacional (do inglês Object-Relational Mapping Tools ou ORM tools) são ferramentas de middleware usadas para criar uma camada de abstracção orientada a objectos, para o programador, enquanto lidam com os dados num formato relacional, na base de dados.

As ferramentas ORM fornecem, assim, uma camada de abstracção que permite ao programador abstrair-se do formato físico em que os dados estão armazenados. A gestão a persistência dos dados é delegada na ferramenta de ORM, permitindo ao programador trabalhar ao nível do código com objectos que instanciam o modelo de domínio, desenvolvido na fase de modelação do software, em vez de ter que usar estruturas com o formato das tabelas da base de dados.

As ferramentas de mapeamento objecto-relacional estabelecem uma ligação bidirecional entre os objectos no código e os dados na base de dados relacional.

Há diversas ferramentas ORM, tanto comerciais como livres (ver Lista de software ORM), de entre as quais a mais usada no mundo Java é decerto o Hibernate, e no mundo .Net, o NHibernate e o ADO.Net Entity Framework.

Mais leitura:
      - Choosing an object-relational mapping tool
      - Hibernate.org
      - ADO.Net Entity Framework at a glance

Outros artigos relacionados:
    - ADO.Net Entity Framework
    - Começar a usar o .Net Entity Framework - 1
    - Começar a usar o .Net Entity Framework - 2
    - Utilização do Hibernate para Java - 1
    - Utilização do Hibernate para Java - 2

sexta-feira, 23 de dezembro de 2011

Começar a usar o .Net Entity Framework - 2

Depois de criado o projeto Windows Forms Application, e gerado o modelo de dados a partir da base de dados, vamos ver como podemos aceder à base de dados através do modelo, usando um pequeno exemplo ilustrativo.

No form Form1 criado automaticamente ao criar o projecto Windows Forms Application, vamos criar uma comboBox, arrastando a partir da toolbox. 


No separador de propriedades (Properties) mudemos-lhe o nome para viaturasBox1.





Começar a usar o .Net Entity Framework - 1


Este artigo ilustra a criação de um modelo Entity Framework e a sua utilização num pequeno programa em C# para ambiente Windows (Windows Forms Application).
Para implementar este exemplo é necessário ter o Visual Studio 2010 instalado (com o 2008 também deve funcionar), assim como a framework .Net 3.5 SP1 ou superior.
Para além disso, é necessário aceder a um serviço de base de dados, pelo que, como primeira abordagem, se aconselha a usar o Microsoft SQL Server 2008.

(Este exemplo foi atualizado para o .Net Framework 4.5, e utilizando o VS 2013)
1. O primeiro passo consiste em criar um novo projecto do tipo Windows Forms Application.



ADO.Net Entity Framework


O Entity Framework é um conjunto de tecnologias do ADO.NET que suportam o desenvolvimento de software orientado aos dados (data-oriented).
Tipicamente, hoje em dia, os programadores de aplicações orientadas aos dados efectuam a modelação das entidades e relacionamentos numa forma orientada por objectos, e depois têm que lidar com o formato em que têm que colocar essas entidades num motor de base de dados. Os dados podem ser fisicamente distribuídos por diversos sistemas de armazenamento e, mesmo as aplicações que trabalham com apenas um sistema de base de dados, têm que fazer compromissos entre o formato lógico dos dados modelados, presente no modelo, e o formato físico, fácil de manter e orientado a um acesso eficiente.
O Entity Framework permite aos programadores trabalharem com os dados no formato de objectos específicos do domínio, conforme modelado no modelo abstracto de dados, sem se preocuparem com as tabelas da base de dados onde os mesmos estão armazenados.
Com o Entity Framework, os programadores podem trabalhar a um nível de abstracção mais elevado do que quando têm que lidar directamente com os dados, e podem criar e manter aplicações orientadas aos dados com menos código do que em aplicações tradicionais.
Como o Entity Framework é um componente da .NET Framework, as aplicações que usam o Entity Framework podem correr em qualquer computador em que está instalada a framework .Net, acima da versão 3.5 SP1.

No próximo artigo veremos um pequeno exemplo de como usar o ADO.Net Entity Framework.


Outros artigos relacionados:
    - Começar a usar o .Net Entity Framework - 1
    - Começar a usar o .Net Entity Framework - 2