Antes de começar lembre-se todos os arquivos são no mesmo pacote, e vai presisar do jar do hibernate que tem no site www.hibernate.org para funcionar a aplicação. Obs: exemplo foi testado no MYSQL. Para criar uma aplicação com hibernate primeiramente crie uma classe para a persistencia public class Pessoa { private String nome; private String email; private String telefone; private Endereco endereco; private Integer id; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Endereco getEndereco() { return endereco; } public void setEndereco(Endereco endereço) { this.endereco = endereço; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getTelefone() { return telefone; } public void setTelefone(String telefone) { this.telefone = telefone; } } classe para configurar o hibernate: import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtility { private static SessionFactory factory; static { //Bloco estático que inicializa o Hibernate try { factory = new Configuration().configure().buildSessionFactory(); } catch (Exception e) { e.printStackTrace(); factory = null; } } public static Session getSession() { return factory.openSession(); } } crie o arquivo "Pessoa.hbm.xml" <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="Pessoa"> <!-- Identificador da classe --> <id name="id"> <generator class="increment"/> </id> <!-- Propriedades da classe --> <property name="nome"/> crie o arquivo: "Hibernate.cfg.xml" <!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.dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="hibernate.connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="hibernate.connection.url"> jdbc:mysql://localhost/hibernate?autoReconnect=true </property> <property name="hibernate.connection.username"> root </property> <property name="hibernate.connection.password"> </property> <!-- Condiguração do c3p0 --> <property name="hibernate.c3p0.max_size">10</property> <property name="hibernate.c3p0.min_size">2</property> <property name="hibernate.c3p0.timeout">5000</property> <property name="hibernate.c3p0.max_statements">10</property> <property name="hibernate.c3p0.idle_test_period">3000</property> <property name="hibernate.c3p0.acquire_increment">2</property> <!-- Configurações de debug --> <property name="show_sql">true</property> <property name="use_outer_join">true</property> <property name="hibernate.generate_statistics">true</property> <property name="hibernate.use_sql_comments">true</property> <mapping resource="Pessoa.hbm.xml"/> </session-factory> </hibernate-configuration> <property name="telefone"/> <property name="email"/> <!-- Relacionamento da classe --> <one-to-one name="endereco" class="Endereco" cascade="save-update"/> </class> </hibernate-mapping> crie o arquivo: "log4j.properties" ### direct log messages to stdout ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}\:%L - %m%n ### direct messages to file hibernate.log ### log4j.appender.file=org.apache.log4j.FileAppender log4j.appender.file.File=hibernate.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}\:%L - %m%n ### set log levels - for more verbose logging change 'info' to 'debug' ### log4j.rootLogger=warn, stdout, file #log4j.logger.org.hibernate=info log4j.logger.org.hibernate=debug ### log just the SQL #log4j.logger.org.hibernate.SQL=debug ### log JDBC bind parameters ### log4j.logger.org.hibernate.type=info #log4j.logger.org.hibernate.type=debug ### log schema export/update ### log4j.logger.org.hibernate.tool.hbm2ddl=debug ### log HQL parse trees #log4j.logger.org.hibernate.hql=debug ### log cache activity ### #log4j.logger.org.hibernate.cache=debug ### log JDBC resource acquisition #log4j.logger.org.hibernate.jdbc=debug ### enable the following line if you want to track down connection ### ### leakages when using DriverManagerConnectionProvider ### #log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace crie no banco de dados : CREATE TABLE Pessoa ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nome VARCHAR(255) NULL, email VARCHAR(255) NULL, telefone VARCHAR(255) NULL, PRIMARY KEY(id) ) Agora teste a aplicação com esta classe import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.Transaction; public class Teste { public static void main(String[] args) { Session sessao = HibernateUtility.getSession(); //Abrindo uma sessão Transaction transaction = sessao.beginTransaction(); //Iniciando uma transação´ Pessoa p=new Pessoa(); p.setNome("nome teste"); p.setEndereco("endereco teste"); sessao.save(p); //Transformando o objeto transiente em um objeto //persistente no banco de dados transaction.commit(); //Finalizando a transação System.out.println("Persistencia"+sessao.isConnected()); sessao.close(); //Fechando a sessão } }