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.createcreate-dropupdate
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 tipolong,shortouint.Increment: Gera identificadores do tipolong,shortouintque são exclusivos somente quando nenhum outro processo está inserindo dados na mesma tabela. Não use em um cluster.Param: Usado em conjunto comforeignpara 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)ousessao.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.