#Este é um post fechado Este post está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais sobre como abrir este post!
Artigo Java Magazine 28 - Persistência com Hibernate
Artigo da Revista Java Magazine Edição 28.

Atenção: por essa edição ser muito antiga não há arquivo PDF para download.Os artigos dessa edição estão disponíveis somente através do formato HTML.
Java Livre
Persistência com Hibernate
Conhecendo o Mais Popular Framework O/R
Aprenda a escrever aplicações eficientes baseadas no Hibernate: conceitos, mapeamentos comuns, HQL e técnicas para agilizar o acesso a dados
O Hibernate está se tornando o framework de persistência objeto-relacional preferido do desenvolvedor Java. Em sua terceira geração (o que para um projeto open source significa um nível de evolução e maturidade que poucos softwares, mesmo proprietários, conseguem atingir) ele é talvez o framework de persistência mais flexível e poderoso d mercado – e seus recursos serviriam de inspiração para as novas especificações EJB 3.0 e JDO 2.0 do JCP. Este artigo apresenta os primeiros passos na construção de aplicações com o Hibernate.
Elementos
Antes de falar do Hibernate em si, vale a pena conhecer alguns conceitos e alternativas á persistência objeto-relacional – veja o quadro “Persistência de objetos e bancos relacionados”.
Todo framework de persistência de objetos tem três componentes principais:
• Uma descrição do mapeamento entre o modelo de objetos em memória e seu correspondente em disco (no caso, tabelas de um banco relacional).
• Uma API para armazenamento e recuperação de objetos persistentes.
• Uma linguagem de consultas que permite determinar o subconjunto dos objetos persistentes que devem ser trazidos para a memória.
Daqui para frente apresentaremos como estes três componentes funcionam no Hibernate, e depois como compilar e executar uma aplicação baseada nesse framework.
Para manter o foco no framework, todos os exemplos serão aplicações de linha de comando, sem interfaces gráficas sofisticadas. É importante também destacar que a maioria das operações e configurações no Hibernate pode ser feita de ersas formas diferentes, o que permite que o framework seja utilizado na maior variedade possível de situações e seja adaptável aos ambientes mais ersos. Aqui não vamos explorar todas as variações possíveis, mas sim fornecer uma base segura para o leitor iniciar o seu aprendizado e obter resultados rápidos com o framework.
Começando o mapeamento O/R
Iniciamos com um modelo de objetos simples, apresentado na Figura 1. Este modelo seria parte de uma aplicação de cadastro de clientes numa empresa de comércio. Os clientes são agrupados em categorias para, por exemplo, receberam tratamento diferenciado em termos de promoções, parcelamento de compras e descontos sobre compras em volume.

Figura 1. Modelo de objetos das aplicações de exemplo
Observe que normalmente não seria representada a associação de composição entre Cliente e Endereço, pois conceitualmente um Endereço é apenas uma informação sobre um cliente, como nome ou sexo. Mas aqui essa composição foi deixada explícita, para fins de demonstração. Note também que há na classe Cliente um atributo telefones, que é uma coleção, pois cada cliente pode ter vários telefones cadastrados.
O modelo apresentado foi escolhido como exemplo porque expõe duas limitações do modelo relacional: a incapacidade de expressar atributos complexos (objetos com seus próprios atributos, em vez de valores simples) e atributos multivalorados. A representação natural deste modelo de objetos em Java é apresentado na Listagem 1, onde são definidas as classes Cliente, Categoria e Endereço.
Embora não seja obrigatório, recomenda-se seguir o padrão de JavaBeans na definição dos objetos persistentes (ou seja, usar métodos de acesso get/set para os atributos, definir um construtor sem argumentos e tornar todas as classes serializáveis).
A classe Endereço em si não é persistente, pois nunca serão armazenados endereços “soltos”; mas os dados dos endereços o serão, em decorrência do seu vínculo com Cliente. Num modelo relacional, nosso atributo endereço tem que ser “aberto” ou “achatado” (flattened), colocando-se seus atributos na própria tabela de clientes. E o atributo telefone teria que ser transformado ou em uma outra tabela, ou em vários campos no estilo “telefonei”, “telefone2” etc. Optamos pela primeira alternativa. O modelo relacional adotado para o exemplo é apresentado na
ATENÇÃO! A exibição deste artigo foi interrompida.
#Este é um post fechado Este post está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais sobre como abrir este post!

Space do autor

Estudo comparativo entre banco de dados IBM Informix e Microsoft SQL

0
0
Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!