Mapeamento com Hibernate

Salve!

Estou tentando mapear uma simples classe: Usuário, utilizando o hibernate. No entanto, o mapeamento não ocorre no banco. Se alguém tiver alguma idéia… Desde já, grato. Seguem: código, logs…

Classe Usuario.java:

package br.com.giminiani.permissao;

import javax.persistence.Id;
import org.hibernate.annotations.Entity;


@Entity
public class Usuario {
		
	@Id
	private Long id;	
	//private String cfp;
	private String login;
	private String senha;
	private String email;
	private Boolean admin;	
	private Boolean ativo;
	
			
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	
	/*
	public String getCfp() {
		return cfp;
	}
	public void setCfp(String cfp) {
		this.cfp = cfp;
	}
	*/
	
	public String getLogin() {
		return login;
	}
	public void setLogin(String login) {
		this.login = login;
	}
	
	public String getSenha() {
		return senha;
	}
	public void setSenha(String senha) {
		this.senha = senha;
	}
	
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	
	public Boolean getAdmin() {
		return admin;
	}
	public void setAdmin(Boolean admin) {
		this.admin = admin;
	}
	
	public Boolean getAtivo() {
		return ativo;
	}
	public void setAtivo(Boolean ativo) {
		this.ativo = ativo;
	}	
	
}

hibernate.cfg.xml

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

<hibernate-configuration>
	<session-factory>		
		<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
		<property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/sife</property>
		<property name="hibernate.connection.username">postgres</property>
		<property name="hibernate.connection.password">root</property>
		<property name="hibernate.hbm2ddl.auto">create-drop</property> 
		<property name="hibernate.show_sql">true</property>
		<property name="hibernate.format_sql">true</property>
		<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>		
		<mapping class="br.com.giminiani.permissao.Usuario"/>							
	</session-factory>
</hibernate-configuration>

Classe GeraBanco.java, com um simples main para teste:

package br.com.giminiani.teste;

import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import br.com.giminiani.permissao.Usuario;

public class GeraBanco {
	public static void main(String[] args) {

		AnnotationConfiguration configuration = new AnnotationConfiguration();
		configuration.addAnnotatedClass(Usuario.class);
		configuration.configure();		
		SchemaExport se = new SchemaExport(configuration);
		se.create(true, true);
	}	
}

log:

01:03:31 INFO [Version ] Hibernate Annotations 3.5.0-Final 01:03:31 INFO [Environment ] Hibernate 3.5.0-Final 01:03:31 INFO [Environment ] hibernate.properties not found 01:03:31 INFO [Environment ] Bytecode provider name : javassist 01:03:31 INFO [Environment ] using JDK 1.4 java.sql.Timestamp handling 01:03:31 INFO [Version ] Hibernate Commons Annotations 3.2.0.Final 01:03:31 INFO [Configuration ] configuring from resource: /hibernate.cfg.xml 01:03:31 INFO [Configuration ] Configuration resource: /hibernate.cfg.xml 01:03:31 INFO [Configuration ] Configured SessionFactory: null 01:03:31 INFO [Dialect ] Using dialect: org.hibernate.dialect.PostgreSQLDialect 01:03:31 INFO [AnnotationConfiguration] Hibernate Validator not found: ignoring 01:03:31 INFO [SchemaExport ] Running hbm2ddl schema export 01:03:31 INFO [SchemaExport ] exporting generated schema to database 01:03:31 INFO [DriverManagerConnectionProvider] Using Hibernate built-in connection pool (not for production use!) 01:03:31 INFO [DriverManagerConnectionProvider] Hibernate connection pool size: 20 01:03:31 INFO [DriverManagerConnectionProvider] autocommit mode: false 01:03:31 INFO [DriverManagerConnectionProvider] using driver: org.postgresql.Driver at URL: jdbc:postgresql://localhost:5432/sife 01:03:31 INFO [DriverManagerConnectionProvider] connection properties: {user=postgres, password=****} 01:03:32 INFO [SchemaExport ] schema export complete 01:03:32 INFO [DriverManagerConnectionProvider] cleaning up connection pool: jdbc:postgresql://localhost:5432/sife

Obrigado,
Giminiani!

bgiminiani,

fiz does posts, no meu blog, sobre o uso de JPA com o hibernate como provider, acho que irá te ajudar:

www.serjava.blogspot.com

[quote=fabiomedeirosf]bgiminiani,

fiz does posts, no meu blog, sobre o uso de JPA com o hibernate como provider, acho que irá te ajudar:

www.serjava.blogspot.com[/quote]

No caso dele, ele está usando Hibernate como provider, o mapeamento do XML acaba sendo diferente.

Se não me engano, você precisa declarar suas classes no seu arquivo hibernate.cfg.xml.

Teria que fazer algo como no final dele.

Ola bgiminiani! Primeiramente seja bem vindo a comunidade!

Olha nao entendi bem qual o problema…voce esta exportando mas nao esta criando no banco é isso?

ps: AnnotationConfiguration esta deprecated. Seria mais interessante voce usar a classe Configuration para mapear suas entidades.

edit:

Essa parte do teu codigo:

Acredito que nao ha necessidade de mapear isso no cfg.xml ja que voce esta usando annotations para mapear. Ao chamar o metodo addAnnotatedClass(Usuario.class) o que ele faz é exatamente mapear a sua classe no hibernate. Quando voce mapeia uma classe anotada no cfg.xml voce ganha na comodidade de nao precisar chamar o metodo addAnnotatedClass.

Acaba que isso é redundante e pode ser que seja a causa do problema.

Olá. Sou novo e ainda estou aprendendo.
Mas no teu caso eu sugiro a criação de uma classe Util para o hibernate e lá vc faz as declarações do configuration e seta as properties.
um exemplo do q eu uso

[code]package br.com.***.util;

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

public class HibernateUtil {

private static final SessionFactory sessionFactory;


static {

	Configuration configuration = new Configuration();
	configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
	configuration.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
	configuration.setProperty("hibernate.connection.url", "jdbc:mysql://localhost/***");
	configuration.setProperty("hibernate.connection.username", "***");
	configuration.setProperty("hibernate.connection.password", "***");
	configuration.setProperty("hibernate.c3p0.min_size", "1");
	configuration.setProperty("hibernate.c3p0.max_size", "5");
	configuration.setProperty("hibernate.c3p0.timeout", "300");
	configuration.setProperty("hibernate.c3p0.max_statements", "50");
	configuration.setProperty("hibernate.c3p0.idle_test_period", "300");
	configuration.setProperty("hibernate.current_session_context_class", "thread");
	configuration.setProperty("hibernate.show_sql", "true");
	configuration.setProperty("hibernate.format_sql", "true");
	configuration.addResource("br/com/***/model/bean/***.hbm.xml");
	configuration.addResource("br/com/***/model/bean/***.hbm.xml");
	configuration.addResource("br/com/***/model/bean/***.hbm.xml");
	
	
	sessionFactory = configuration.buildSessionFactory();
}

public static SessionFactory getSessionfactory() {
	return sessionFactory;
}

}
[/code]

Com isso vc nem precisa criar um hibernate.cfg.xml, já que as configurações estarão em uma classe.

Daí… na tua classe GeraBanco vc pode invocar algum DAO pra implementar e alterar o q vc quer.

Espero ter ajudado xD