Sempre odiei usar XML para configurar frameworks.

O Hibernate é um framework ORM, ele basicamente transforma a visão estruturada do banco de dados em algo que possa ser melhor compreendido no mundo da Orientação a Objetos.

Aqui vai a configuração do Hibernate 4 sem o uso de XML.

Você pode obter o Hibernate 4 aqui

Se você usa Maven:

<dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-core</artifactId>
   <version>4.3.6.Final</version>
</dependency>

Ou se você usa Gradle:

compile 'org.hibernate:hibernate-core:4.3.6.Final'

Crie um projeto na IDE de sua preferência e adicione as dependências.

Crie uma classe para criar as sessões. As sessões são as conexões do banco de dados para o Hibernate. Eu criei uma classe chamada HibernateUtils.java.

Segue o fonte:

import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.AvailableSettings;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;</code>

public class HibernateUtils {

    private static SessionFactory sessionFactory;

    static {
        Configuration c = new Configuration();

        c.addAnnotatedClass(Pessoa.class);

        c.setProperty(AvailableSettings.DIALECT, "org.hibernate.dialect.MySQLDialect");
        c.setProperty(AvailableSettings.DRIVER, "com.mysql.jdbc.Driver");
        c.setProperty(AvailableSettings.USER, "root");
        c.setProperty(AvailableSettings.PASS, "root");
        c.setProperty(AvailableSettings.URL, "jdbc:mysql://localhost:3306/test");

        c.setProperty(AvailableSettings.HBM2DDL_AUTO, "create");

        ServiceRegistry registry = new StandardServiceRegistryBuilder().applySettings(c.getProperties()).build();

        sessionFactory = c.buildSessionFactory(registry);

    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

}

As configurações são feitas através do Objeto Configuration e são basicamente:

  • Classes de entidades: configuradas através do método addAnnotatedClass(class);
  • Propriedades:
    • Dialect: Linguagem de banco de dados que será usada, no exemplo utilizei o MySQL;
    • Driver: Uma string com o driver do banco de dados
    • User: usuário do banco de dados
    • Pass: Senha do banco de dados;
    • URL: URL de conexão do banco de dados

A ultima propriedade é uma configuração especial do Hibernate em que ele executa algumas ações no banco de dados. Existem 4 valores que podem ser setados:

  • update: Atualiza o banco de dados;
  • create: Cria o banco de dados;
  • create-drop: Apaga tudo e recria o banco de dados;
  • validate: Apenas valida se todos os campos mapeados realmente existem no banco de dados assim como seus relacionamentos e tipo de dados;

Agora vamos criar uma classe para fazer o teste, eu criei uma chamada Pessoa com apenas dois campos, id e nome:

@Entity
public class Pessoa implements Serializable {

    @Id @GeneratedValue
    private Long id;

    private String nome;

    public Long getId() {
        return id;
    }

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

    public String getNome() {
        return nome;
    }

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

E agora só colocar uma classe para testar:

public class Main {

    public static void main(String[] args) {

        Session session = HibernateUtils.getSessionFactory().openSession();


        session.beginTransaction();

        Pessoa p1 = new Pessoa();
        p1.setNome("Felipe");
        session.save(p1);

        Pessoa p2 = new Pessoa();
        p2.setNome("Ana");
        session.save(p2);

        session.getTransaction().commit();

        for (Pessoa p:(List) session.createCriteria(Pessoa.class).list()) {
            System.out.println(p.getNome());
        }

        session.close();

        System.exit(0);
    }

}

Se tudo funcionar corretamente, será criado dois registros na tabela e logo em seguida serão listados.

Em caso de dúvidas, você pode obter o fonte aqui.