Guia Essencial de Configuração e Mapeamento Hibernate
Classificado em Computação
Escrito em  em  português com um tamanho de 7,77 KB
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,- shortou- int.
- Increment: Gera identificadores do tipo- long,- shortou- intque 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- foreignpara 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
- Instanciar os objetos pessoa e endereço.
- Atribuir dados para cada um deles.
- 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 Cursodo tipoCursodeve ter uma relaçãomany-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.
