Maven – Configurando e Usando o Maven – Add Dependency – Hibernate – Oracle

Publicado: 20 de dezembro de 2014 em Java

O Apache Maven é uma ferramenta de gerenciamento de projetos e compressão indispensável no gerenciamento de projetos de todos os tamanhos. O Maven também torna o trabalho do desenvolvedor muito mais fácil quando você precisa utilizar frameworks e bibliotecas diversas que não estão incluídos por padrão no pacote Java que você utiliza. Para começar a fazer uso dos recursos que o Maven nos proporciona vamos utilizar o framework Hibernate e uma biblioteca de acesso a dados da Oracle para criar uma simples aplicação web com o servidor de aplicação Tomcat.

O que é Hibernate?

O Hibernate é um framework para o mapeamento objeto-relacional escrito na linguagem Java, que facilita o mapeamento dos atributos entre uma base tradicional de dados relacionais e o modelo do objeto de uma aplicação, mediante o uso de arquivos (XML) ou anotações Java.

Hibernate: http://hibernate.org/

Configurando o Eclipse e o Maven para criar uma aplicação Web

Nosso foco principal é mostrar como utilizar o Maven para adicionar dependências e mostrar como funciona os pacotes que o Maven utiliza sem que tenhamos que baixa-los e instala-los e também como configurar o Eclipse para que o Tomcat consiga trabalhar em conjunto com o Maven. Não se preocupe em entender todo o código abaixo pois não focaremos em como utilizar o Hibernate agora, futuramente teremos vários outros posts que o contemplarão.

1 – Crie um projeto Maven com o artefato maven-archetype-webapp e o configure adicionado o servidor Tomcat ao Build Path, caso não saiba como fazer isto veja nosso post anterior sobre como utilizar o Maven e o Tomcat clicando aqui.

  • Com o projeto criado, clique com o botão direito no seu projeto e escolha Maven->Add Dependency.
  • Digite a palavra hibernate e encontre org.hibernate hibernate-core.
  • Expanda e selecione sua ultima versão final.
Hibernate Core

Hibernate Core

2 – Por padrão os downloads estão desabilitados, precisamos habilita-los para podermos utilizar outras dependências. No menu Window->Preferences digite “maven” e posicione o cursor no tópico Maven e marque os tópicos como na figura abaixo e aguarde o download, talvez precise reinicializar o Eclipse:

Maven - Preferencias

Maven – Preferencias

3 – Após o carregamento completo das configurações do Eclipse, continue a adicionar mais dependências, desta vez escolha hibernate-validator:

Hibernate Validator

Hibernate Validator

4 – Em seguida adicione hibernate Entity-manager:

Hibernate Entity Manager

Hibernate Entity Manager

5 – Por ultimo adicione Oracle ojdbc14:

Oracle - ojdbc14

Oracle – ojdbc14

6 – Agora abra seu arquivo chamado pom.xml e constatará que ocorreu um erro ao adicionar o driver da Oracle, isto porque o Maven não consegue baixa-lo. Você precisa de um Login gratuito da Oracle para baixar o driver e precisa instala-lo manualmente no Maven, utilize o link abaixo para baixar o arquivo:

ojdbc14: http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html

Para instalar utilize a linha de comando abaixo, atente-se as versões no arquivo pom.xml:

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14  -Dversion=10.2.0.4.0 -Dpackaging=jar -Dfile=ojdbc14.jar -DgeneratePom=true

Use a imagem abaixo para referencia de como instalar a dependência:

Oracle - ojdbc14

Oracle – ojdbc14

Após instalar com sucesso volte ao Eclipse, clique com o botão direito no seu projeto e escolha Maven->Update Project o erro deve desaparecer.

7 – O Tomcat por padrão não consegue utilizar as dependências que o Maven possui, você precisa mudar a configuração. Com o botão direito no seu projeto escolha propriedades e Deployment Assembly:

  • Clique em Add.
  • Escolha Java Build Path Entries.
  • Escolha Maven Dependencies e finalize.
Web Deployment Assembly

Web Deployment Assembly

8 – Crie os arquivos para cada código abaixo e rode sua aplicação utilizando o Hibernate para ler um registro do banco de dados:

Maven - Tomcat - Hibernate - Oracle

Maven – Tomcat – Hibernate – Oracle

Exemplo:

Neste exemplo utilizamos o Maven para localizar as dependências necessárias para nosso projeto sem que precisássemos instala-las manualmente. Crie cada arquivo com seu respectivo tipo, utilize a imagem acima para verificar como fica a arvore do seu projeto. Rode o Servlet chamado HelloWorldHibernate.java.

Oracle

-- Cria tabela de funcionários
create table Funcionarios(
  ID_Funcionario  NUMBER(5),
  Nome            VARCHAR2(30),
  Sobrenome       VARCHAR2(70),
  Cargo           VARCHAR2(30),
  Salario         NUMBER(9,2));

-- Insere dados na tabela
INSERT INTO FUNCIONARIOS VALUES  (10, 'John', 'Lennon', 'Compositor', 1234.55);

XML – hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>

<session-factory>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:xe</property>
<property name="hibernate.connection.username">user</property>
<property name="hibernate.connection.password">pass</property>
<property name="hibernate.connection.pool_size">10</property>
<property name="show_sql">true</property>
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
<property name="hibernate.current_session_context_class">thread</property>

<mapping class="org.desenvolvimento.aberto.Funcionario" />

</session-factory>
</hibernate-configuration>

Java

Servlet – Hello World Hibernate

package org.desenvolvimento.aberto;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.hibernate.Session;

public class HelloWorldHibernate extends HttpServlet {

	private static final long serialVersionUID = 1L;

	public HelloWorldHibernate() {
		super();
	}

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		// Abre sessão recuperando a conexão
		Session session = HibernateFactory.getSessionFactory().openSession();

		// Inicia transação
		session.beginTransaction();

		// Cria objeto de negocio
		Funcionario funcionario = new Funcionario();

		// Adiciona sessão ao objeto
		funcionario = (Funcionario) session.load(Funcionario.class, 10);

		// Cria conteudo HTML
		response.setContentType("text/html");

		PrintWriter html = response.getWriter();

		// Retorna valores do objeto
		html.println("<html>");
		html.println("<body>");
		html.println("<h1>Desenvolvimento Aberto</h1>");
		html.println("<h2>Maven - Dependências ADD: Hibernate Framework: </h2>");
		html.println(funcionario.getId() + " - ");
		html.println(funcionario.getNome() + " ");
		html.println(funcionario.getSobrenome() + " - ");
		html.println(funcionario.getCargo() + " - ");
		html.println(funcionario.getSalario());
		html.println("</body>");
		html.println("</html>");

		// Encerra sessão
		session.getTransaction().commit();

	}

}

Hibernate – Session Factory

package org.desenvolvimento.aberto;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateFactory {

	// Cria objeto da sessão
	private static final SessionFactory sessionFactory = buildSessionFactory();

	// Constroi sessão
	private static SessionFactory buildSessionFactory() {
		try {
			// buildSessionFactory não será utilizado em versões superiores
			// Veremos outros métodos para criar um Factory
			// Não é necessário incluir o "hibernate.cfg.xml" no configure()
            // Incluímos somente a nível de fácil entendimento da chamada da configuração.
			// Você pode retirar a chamada.
			return new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
		} catch (Throwable ex) {
			// Em caso de erro
			System.err.println("Initial SessionFactory creation failed." + ex);
			throw new ExceptionInInitializerError(ex);
		}
	}

	// Retorna Factory da sessão
	public static SessionFactory getSessionFactory() {
		return sessionFactory;
	}

	// Encerra Sessão
	public static void shutdown() {
		getSessionFactory().close();
	}

}

Objeto de negocio – Funcionário

package org.desenvolvimento.aberto;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

// Define Entidade e tabela
@Entity
@Table(name = "funcionarios")
public class Funcionario {

	// Define atributos e decoradores Hibernate como ID e colunas
	@Id
	@GeneratedValue
	@Column(name = "ID_FUNCIONARIO")
	private int id;

	@Column(name = "NOME")
	private String nome;

	@Column(name = "SOBRENOME")
	private String sobrenome;

	@Column(name = "CARGO")
	private String Cargo;

	@Column(name = "SALARIO")
	private double salario;

	// Métodos Getter e Setter
	public long getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getSobrenome() {
		return sobrenome;
	}

	public void setSobrenome(String sobrenome) {
		this.sobrenome = sobrenome;
	}

	public String getCargo() {
		return Cargo;
	}

	public void setCargo(String cargo) {
		Cargo = cargo;
	}

	public double getSalario() {
		return salario;
	}

	public void setSalario(double salario) {
		this.salario = salario;
	}

}

Deixe um comentário