Guia Essencial de Configuração e Mapeamento Hibernate

Classificado em Computação

Escrito em em português com um tamanho de 7,77 KB

Configurações Essenciais do Hibernate

  • hibernate.connection.driver_class: Classe JDBC relativa ao gerenciador de banco de dados utilizado.
  • hibernate.connection.url: String de conexão com o banco de dados.
  • hibernate.dialect: Dialeto que informa qual SGBD será utilizado.
  • hibernate.hbm2ddl.auto: Forma de manipulação da estrutura do banco de dados.
    • create
    • create-drop
    • update
  • mapping resource: Arquivos de mapeamento ORM.

Configuração e Manipulação de Sessões

  • SessionFactory, Configuration: Configuração via programa.
  • Session, Transaction: Manipulação de dados.

Mapeamento de Relacionamentos Um para Um (1:1)

  • Exemplo: Endereço e Pessoa: Endereço e pessoa são distintos, mas no DER (Diagrama de Entidade-Relacionamento) cada um chama a classe do outro.
  • constrained=true: Não permite que se crie um endereço sem uma pessoa associada.
  • cascade="save-update": Quando uma pessoa for inserida ou atualizada, o endereço também será.

Identificadores (Primary Keys - PK)

  • id: Representa a chave de acesso (Primary Key - PK).
  • generator class: Indica como será gerada essa PK.
  • Estratégias de Geração de PK:
    • Foreign: Usa o identificador de outro objeto associado. Geralmente utilizado com uma associação de chave primária.
    • Identity: Oferece suporte a colunas de identificação em DB2, MySQL, MS SQL Server, Sybase e HypersonicSQL. O identificador retornado é do tipo long, short ou int.
    • Increment: Gera identificadores do tipo long, short ou int que são exclusivos somente quando nenhum outro processo está inserindo dados na mesma tabela. Não use em um cluster.
    • Param: Usado em conjunto com foreign para buscar a PK em outra tabela/classe.

Operações de Gravação com Relacionamentos

Fazer a Referência Cruzada entre os Objetos:

  • endereco.setPessoa(pessoa)
  • pessoa.setEndereco(endereco)

Fazer a Gravação:

  • sessao.saveOrUpdate(pessoa) ou sessao.save(pessoa)
  • Você deve gravar somente a pessoa, pois o Hibernate irá desencadear a gravação do endereço.
  • Não efetue a gravação direta do endereço caso o mesmo não esteja com o objeto pessoa informado nele.

Mapeamento de Relacionamentos Um para Muitos (1:N)

Será preciso especificar um atributo do tipo de coleção.

No Hibernate, é possível utilizar as seguintes coleções:

  • Set (HashSet)
  • Map (HashMap)

Exemplos de Configuração:

  • <many-to-one name="curso">: (Nota: Não há 'curso' no diagrama, mas o campo existe na classe.)
  • column="cursoID": Nome do campo na tabela referente.
  • <one-to-many inverse>: Define como o Hibernate tratará a inserção e retirada de objetos. Apenas quando um objeto for inserido do outro lado, ele deve ser persistido no banco de dados.
  • private Set disciplinas = new HashSet();: Indica que um curso pode possuir diversas disciplinas.

Gravando Dados com Coleções

  1. Instanciar os objetos pessoa e endereço.
  2. Atribuir dados para cada um deles.
  3. Fazer a referência cruzada entre os dois objetos.

Considerações sobre Coleções

  • Set: Não armazena objetos duplicados (garante unicidade).
  • Map: Se a chave do objeto já existe, ele retorna um erro.

Estrutura de Classes para Mapeamento

  • Classe Disciplina: Em toda classe, você deve definir os atributos e criar todos os getters e setters, caso contrário, o Hibernate apresentará erros.
  • Classe Curso: Exemplo: private Set disciplinas = new HashSet();
  • Relacionamento: Para a ligação entre as duas classes existir, a variável Curso do tipo Curso deve ter uma relação many-to-one.
  • column: Nome do campo na tabela referente a essa propriedade.

O que é o Hibernate?

É um framework, um conjunto de JARs que, quando combinados, oferecem uma especialidade específica (persistência de dados).

Configuração via hibernate.cfg.xml

  • É o arquivo de configuração principal do Hibernate. Tudo é configurado via XML.
  • Ele possui o caminho para o banco de dados.
  • Primeiro, é preciso ter o conector JDBC instalado (ex: Driver JDBC MySQL, Java Driver Database Connect).

Detalhamento de hibernate.hbm2ddl.auto

  • create-drop: Ele estará sempre limpando e criando o esquema do banco de dados.
  • Ideal quando em fase de planejamento.

Classe Utilitária de Conexão (Hibernate Utility)

  • Você precisará de uma classe utilitária.
  • Será uma fábrica de sessões.
  • Para criar uma sessão, você deve invocá-la.

Configuração Programática

  • Exemplo: Configuration = new Configuration().configure().
  • Ele carrega um arquivo XML externo para dentro do programa.
  • Ou, no arquivo hibernate.config, ele já pode pegar de lá se configurarmos.
  • Ele cria seu banco de dados de acordo com a classe.
  • Comentário: É possível remover a configuração do XML e deixá-la toda programaticamente dentro do seu projeto.
  • Exemplo de propriedade: hibernate.connection.username: root.
  • Pegando o nome da propriedade e o seu conteúdo.

Criando e Gerenciando a Sessão

  • Criando a Nossa Sessão: Exemplo: buildSessionFactory().
  • Ele está se comunicando com o banco, criando a estrutura e preparando-a.
  • Conectando ao Banco: Exemplo: sessao = HibernateUtil.getSessionFactory().openSession().
  • Ele fará a conexão com o banco de dados.
  • A sessão é atribuída à variável sessao.
  • A variável transaction: A partir da sessão, ele inicia a transação.
  • Ciclo de Transação:
    • beginTransaction()
    • No meio, ocorre a manipulação dos dados.
    • commit()
    • rollback()
    • Depois, o commit() e o fechamento da sessão.

Mapeamento de Endereço (Arquivo XML)

  • É o arquivo XML de mapeamento.
  • Exemplo de estrutura: <!DOCTYPE>, <hibernate-mapping> (nunca muda).
  • A partir do class name, você começa a modificá-lo.

Gravando os Dados (Ambiente de Desenvolvimento)

  • Direto no NetBeans, na pasta...
  • ...e adicionar a biblioteca.

Entradas relacionadas: