0

Hibernate Relacionamento N:1

logoHibernateHibernate Relacionamento N:1

Nesta segunda parte da postagem sobre relacionamentos com o Hibernate demonstro a criação de um relacionamento N:1, utilizando as anotações do Framework. Para exemplificar o relacionamento seguirei o modelo abaixo:

Class Diagram

A anotação @ManyToOne representará o relacionamento na classe Produto. Segue a implementação das classes persistentes:

Classe Persistente Categoria

Classe Persistente Produto

Na classe Produto criamos um objeto do tipo categoria que será responsável pelo mapeamento do relacionamento neste objeto fazemos as seguintes anotações: @ManyToOne(fetch= FetchType.EAGER) que representa em sim o relacionamento do tipo N para 1, já o atributo fetch com valor FetchType.EAGER significa que toda vez que o objeto pai for recuperado da base o atributo mapeado também será recuperado; @JoinColumn é usada para informar qual o nome da coluna que corresponde à chave estrangeira do mapeamento os atributos  insertable e updatable que se assumirem true indica que o atributo deve ser inserido  ou atualizado; @Fecth vai definir como o atributo mapeado será recuperado da base, no nosso caso é feito um SELECT para recuperar o atributo. E assim conseguimos mapear o relacionamento N para 1, nas próximas postagens mapearemos um relacionamento N para N e N para N com atributos.

0

Hibernate Relacionamento 1:N

logoHibernateHibernate Relacionamento 1:N

Nesta postagem descrevo uma forma de modelar um relacionamento entre tabelas 1 para muitos com o uso das anotações do Hibernate. Criei um exemplo simples para demonstrar o uso do Framework de uma forma clara e direta. Segue o modelo a ser implementado.

hibernate1-N

Para exemplificar o relacionamento criaremos as classes persistentes Departamento e Funcionário. A classe Departamento possuirá o relacionamento 1:N através de um atributos do tipo lista de funcionários e a partir de uma anotação @OneToMany.

A implementação da classe persistente Funcionario fica da seguinte forma:

A implementação da classe persistente Departamento fica da seguinte forma:

As classes Funcionario e Departamento serão mapeadas em nosso banco de dados com os nomes tbFuncionariotbDepartamento.

Nota-se que na classe Departamento foi feita a anotação @OneToMany que identifica o relacionamento 1:N, nesta anotação temos o atributo mappedBy com o valor ‘departamento’ onde este valor se refere a um atributo criado na classe Funcionario com o mesmo nome (ver classe Funcionario linha 37) este atributo serve em si para representar que na tabela tbFuncionario temos uma chave estrangeira  relacionada a tbDepartamento, o atributo fetch define quando o conteúdo o atributo será recuperado da base de dados.

A anotação @Cascade indica a ação em cascata a ser empregada do objeto pai para os objetos associados. Já na classe Funcionario foi criado um atributo do tipo departamento que recebe as anotações @ManyToOne que define que existem muitos funcionários para um departamento, @Cascade define as operações em cascata, @JoinColumn que define a chave estrangeira da tabela tbFuncionario, @Fetch  define como o atributo mapeado será recuperado da base de dados.

0

Como funciona o Hibernate

logoHibernateComo funciona o Hibernate

O Hibernate é um framework de mapeamento objeto relacional para aplicações Java, ou seja, é uma ferramenta para mapear classes Java em tabelas do banco de dados e vice-versa. É bastante poderoso e dá suporte ao mapeamento de associações entre objetos, herança, polimorfismo, composição e coleções.

O Hibernate não apresenta apenas a função de realizar o mapeamento objeto relacional. Também disponibiliza um poderoso mecanismo de consulta de dados, permitindo uma redução considerável no tempo de desenvolvimento da aplicação.

A Arquitetura do Hibernate

A arquitetura do Hibernate é formada por um conjunto de interfaces que são responsáveis por executar operações de criação, exclusão, consulta e atualização no banco de dados, além de uma interface para realizar configuração do Hibernate, interfaces responsáveis por realizar a interação entre os eventos do Hibernate e a aplicaçãoe interfaces que permitem a extensão das funcionalidades de mapeamento do Hibernate.

hibernatearquitetura

Além do mapeamento dos objetos relacionais e integração com os bancos de dados o Hibernate interage com APIs já existentes do Java: JTA, JNDI e JDBC.

As principais interfaces do Hibernate são: Session, SessionFactory, Transaction, Query, Configuration. Com essas interfaces conseguimos criar todas as nossas rotinas de banco de dados.

Interface Session

Possibilita a comunicação entre a aplicação e a persistência, através de uma conexão JDBC. É um objeto leve de ser criado, não deve ter tempo de vida por toda a aplicação e não é threadsafe. Um objeto Session possui um cache local de objetos recuperados na sessão. Com ele é possível criar, remover, atualizar e recuperar objetos persistentes.

Interface SessionFactory

Responsável por manter o mapeamento objeto relacional em memória. Permite a criação de objetos Session, a partir dos quais os dados são acessados, também denominado como fábrica de objetos Sessions. Deve existir apenas uma instância dele na aplicação, pois é um objeto muito pesado para ser criado várias vezes.

Interface Configuration

É utilizada para realizar as configurações de inicialização do Hibernate. Com ele, define-se diversas configurações do Hibernate, como por exemplo: o driver do banco de dados a ser utilizado, o dialeto, o usuário e senha do banco, entre outras. É a partir de uma instância desse objeto que se indica como os mapeamentos entre classes e tabelas de banco de dados devem ser feitos.

Interface Transaction

É utilizada para representar uma unidade indivisível de uma operação de manipulação de dados. O uso dessa interface em aplicações que usam Hibernate é opcional. Essa interface abstrai a aplicação dos detalhes das transações JDBC, JTA ou CORBA.

Interfaces Criteria e Query

As interfaces Criteria e Query são utilizadas para realizar consultas ao banco de dados.

Em breve uma abordagem sobre relacionamentos entre tabelas utilizando o Hibernate. Espero ter ajudado em sua pesquisa ou estudo.