Mostrar mensagens com a etiqueta Acesso à BD. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Acesso à BD. 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":

segunda-feira, 6 de fevereiro de 2012

Exemplo de Aplicação Java Swing com BD Oracle – 4

Neste artigo vamos desenvolver a camada de apresentação, ou de Interface com o utilizador, para a aplicação que vem sendo desenvolvida há algum tempo.

No artigo Exemplo de Aplicação Java Swing com BD Oracle - 1, o 1º desta série, tratámos da criação da Base de Dados em Oracle. No 2º artigo, foi criada um package para acesso à base de dados, HelperDB. O 3º artigo tratou da criação de uma biblioteca de classes ao nível da lógica de negócio e acesso a dados.

Este artigo vai tratar da criação do projecto de Interface com o utilizador (GUI - Graphical User Interface) usando classes Swing. Para isso, vamos criar um novo projecto no Net Beans, chamado LibrarySystem:


Este projecto deve ser um Java Desktop Application. Este tipo de projecto fornece um template com a infraestrutura básica de uma aplicação desktop, tal como uma janela principal com uma barra de menu e uma barra de estado.

Depois, vamos seleccionar Basic Application (o outro tipo, Database Application, iremos abordar numa outra série de artigos).

Este tipo de projecto cria de antemão 3 classes:
- LibrarySystemApp.java - é a classe principal da aplicação. A main irá lançar a janela principal. A partir daí, toda a aplicação será guiada por eventos.


quinta-feira, 26 de janeiro de 2012

Exemplo de Aplicação Java Swing com BD Oracle – 3

Hoje, vamos desenvolver uma biblioteca de classes que mapeia os conceitos do domínio do problema, e faz a ponte entre a interface com o utilizador, cujo desenvolvimento trataremos no próximo artigo, e a camada de persistência de dados, tratada no primeiro artigo desta série.

Esta camada com conceitos e operações do domínio do problema é comummente chamada de camada intermédia ou camada de lógica do negócio.

Podemos considerar que o nosso pequeno sistema aplicacional terá, então, uma arquitectura de software em 3-camadas (abordaremos o tema da arquitectura de software num artigo futuro).

Há várias maneiras de desenvolver esta camada intermédia, a qual pode ela própria conter uma ou mais camadas. Nós iremos desenvolver uma classe para cada conceito do domínio, o que corresponde, mais ou menos, neste pequeno exemplo, a desenvolver uma classe para cada tabela da base de dados.

Há várias maneiras de fazer isso. Em particular, vamos ver duas possíveis maneiras, cada uma com o seu grupo de defensores, e com as suas próprias vantagens e desvantagens.

1 – Há autores que defendem o desenvolvimento de uma camada de classes apenas com atributos, getters e setters (ex.: classe Book abaixo), separadamente de uma camada de classes com operações com significado para o negócio (ex.: classe BookBLL abaixo).

1.1 classe Book:
public class Book {
    private int idBook;
    private String title;
    private String editor;
    private java.sql.Date date;
    private String ISBN;
    private String edition;
    //
    private List<Author> authors = new ArrayList<Author>();

domingo, 22 de janeiro de 2012

Exemplo de Aplicação Java Swing com BD Oracle - 2

No artigo anterior iniciámos a construção de uma série de artigos para a construção de uma pequena aplicação exemplo de gestão de biblioteca, para ambiente desktop usando classes Java Swing, e acedendo a uma base de dados (BD) Oracle.

O artigo anterior tratou da criação da Base de Dados em Oracle.Este artigo vai tratar da construção de uma classe Java para acesso à Base de Dados.

Iremos usar o NetBeans IDE 7.0.1, o qual pode ser downloaded de http://netbeans.org/community/releases/70/.

Após instalar o NetBeans IDE 7.0.1, devemos criar um novo projecto "Java Class Library", ao qual vamos chamar HelperDB, pois irá tratar-se apenas de uma classe de acesso à base de dados.


 
Criamos uma classe Java, a que chamamos DBAccessObj, a qual ficará no ficheiro DBAccessObj.java.

É necessário incluir as bibliotecas de classes JAR para acesso por JDBC à base de dados Oracle:


Estes ficheiros jar devem estar presentes na directoria

                              oraclexe\app\oracle\product\10.2.0\server\jdbc\lib

sendo oraclexe a directoria onde foi instalado o Oracle XE. A pasta 10.2.0 refere-se à versão do Oracle XE que tenho instalada na minha máquina.

quinta-feira, 19 de janeiro de 2012

Exemplo de Aplicação Java Swing com BD Oracle - 1

Hoje vamos iniciar uma série de artigos que culminarão com uma pequena aplicação exemplo de gestão de biblioteca, feita em Java, para ambiente desktop usando classes Java Swing, e acedendo a uma base de dados (BD) Oracle.

Este primeiro artigo trata da criação de uma pequena Base de Dados em Oracle. Foi usado o Oracle Express 10g, o qual pode ser downloaded gratuitamente em http://www.oracle.com/technetwork/database/express-edition/downloads/102xewinsoft-090667.html. Há já uma versão mais recente do Oracle Express, a 11g release 2, a qual pode ser obtida em http://www.oracle.com/technetwork/database/express-edition/downloads/index.html e com a qual o exemplo também deverá funcionar.

Após a instalação do Oracle, podemos aceder à ferramenta de administração da base de dados indo ao botão Iniciar --> Todos os Programas --> Oracle Database 10g Express Edition --> Ir para a Home Page de Banco de Dados  ou, num browser, ir a http://localhost:8080/apex.

Deverá, então, aparecer uma página para efectuarmos o login na ferramenta de administração:



Devemos entrar com o utilizador SYSTEM e a password que definimos para esse utilizador durante o processo de instalação.
Após entrar aparece-nos o ambiente de trabalho: