Como já citado em diversos tutoriais, livros e artigos, sabe-se que um dos melhores Frameworks de persistência de dados é o Hibernate. Neste artigo daremos foco na sua instalação que servirá tanto para projetos Web ou Desktop.

Na seção de downloads deste artigo você poderá baixar um arquivo compactado (formato .rar) com todos os .jar necessários para o funcionamento básico do Hibernate. Estes foram organizados conforme o tutorial, caso você deseje adicionar mais funcionalidades colocamos também o link para o site oficial do Hibernate.

Pré-requisitos

Antes de começarmos, é importante ressaltar as ferramentas que utilizaremos e suas versões:

  • IDE Eclipse Juno. Fique a vontade para utilizar qualquer outra IDE que você deseje, aconselhamos o Eclipse pela praticidade que o mesmo oferece.
  • Jboss Tool. Esta ferramenta é instalada no Eclipse através do “Eclipse Marketplace”. Você deve ir até “Help->Eclipse Marketplace...”. Na janela que abrir digite “Jboss Tool” e instale a versão compatível com sua IDE. Com o JBoss Tool o desenvolvimento não só do Hibernate mas também de outras Frameworks (como Spring, por exemplo) torna-se muito mais prática e intuitiva.
Instalação JBoss Tool

Figura 1: Instalação JBoss Tool

Arquivo hibernate.cfg.xml

Aqui ficam todas as configurações de inicialização do Hibernate, mapeamento de classes e qualquer outra configuração necessária. Com o Jboss Tool instalado fica fácil de criar um arquivo hibernate.cfg.xml, basta ir em “File->New->Other”. Digite “Hibernate” e escolhe a opção “Hibernate Configuration File (cfg.xml)”.

Por padrão ele pedirá para você preencher uma porção de configurações para inicialização do Hibernate, vamos deixar tudo em branco e configurar todas direto no XML. O arquivo criado deverá ser parecido com o mostrado na listagem 1.

Listagem 1: Arquivo hibernate.cfg.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
    </session-factory>
</hibernate-configuration>

Você poderia colocar o hibernate.cfg.xml dentro da pasta “src” e já funcionaria, porém vamos organizar de uma forma prática e fácil de encontrar caso você tenha mais arquivos XML de configurações.

Clique com o botão direito do mouse em cima do nome do seu projeto, vá em “New->Source Folder” e digite “conf”. Poderia ser qualquer outro nome de fácil identificação que você desejar. Será criado uma pasta “conf” com o mesmo ícone do padrão “src”.

Criando Source Folder conf

Figura 2: Criando Source Folder “conf”

Criadas as pastas e o arquivo de configuração, vamos configurar o arquivo em si. Abaixo você verá a configuração completa de como ficará o hibernate.cfg.xml após toda configuração, para você ter uma idéia do que faremos.

Listagem 2: Arquivo hibernate.cfg.xml pronto


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.password">vertrigo</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost/livraria</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="hibernate.show_sql">true</property>
		<property name="hibernate.format_sql">false</property>
		<property name="hbm2ddl.auto">update</property>
		
		<!-- Livro -->
		<mapping class="br.com.meuprojeto.bean.Livro" />
		
	</session-factory>
</hibernate-configuration>

Vamos por parte, linha a linha.

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>: Esta primeira linha configura o driver de conexão com o banco de dados. Lembre-se das aulas de Java no 1º semestre quando você aprendia a usar o “Class.forName” e identificar o driver de conexão com o banco, essa linha faz exatamente a mesma coisa, só que de forma mais automatizada.

<property name="hibernate.connection.password">vertrigo</property>: Senha para conexão com o seu banco de dados.

<property name="hibernate.connection.url">jdbc:mysql://localhost/livraria</property>: Este é análogo ao “DriverManager.getConnection” que faziamos para configurar a url de conexão com o banco, através dessa propriedade você faz a mesma coisa.

<property name="hibernate.connection.username">root</property>: Usuário de conexão ao banco de dados.

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>: Configuração do dialeto usado para criação dos comandos SQL. Sabemos que as DML e DDL diferem (mesmo que as vezes um pouco) de Banco para Banco (Oracle, MySQL, Postgres, SQL Server e etc), por isso é muito importante definir um dialeto correto para não gerar SQL com sintaxe errada.

<property name="hibernate.show_sql">true</property>: Como em 90% das vezes você não trabalhará diretamente com SQL, apenas com HQL ou criterias do Hibernate, você poderá habilitar essa propriedade para ver o SQL que o Hibernate está gerando através do Console, assim você pode até copiar e colar no seu banco de dados para ver se está tudo conforme você deseja.

<property name="hibernate.format_sql">false</property>: Essa propriedade é mais para indentação do “show_sql” configurado na propriedade acima, assim quando o SQL for mostrado no Console ele será indentado de uma forma mais “bonita”. Normalmente essa propriedade fica desabilitada pois consome muito espaço da tela, o que é um desperdício quando temos uma tela cheia de logs para analisar.

<property name="hbm2ddl.auto">update</property>: Essa propriedade faz com que o próprio Hibernate crie as tabelas no banco caso estas não existam, no caso como configuramos para “update” ele tentará corrigir a tabela do banco para ficar idêntica ao definido nos mapeamentos. Tome muito cuidado com essa propriedade pois pode acabar literalmente com sua aplicação se não utilizada com cuidado. Imagine o Hibernate deletar tabelas do seu banco ou mudar nome destas.

<mapping class="br.com.meuprojeto.bean.Livro" />: Com o mapping class dizemos que essa classe esta mapeada para realizar operações no banco, ou seja, de nada adianta você fazer anotações JPA na sua classe Livro se não adicioná-la no mapeamento do hibernate.cfg.xml.

CONCLUSÃO

Enfim, com as configurações acima você conseguirá inicializar o Hibernate sem problemas. É óbvio que há mais milhares de configurações que podem ser feitas, mas fica a seu critério realizá-las.

Links