Dúvida básica Hibernate

Pessoal, estou tentando persistir um simples objeto no BD (point base) mas estou recebendo uma exception

Acho que está faltando o Persistence.xml…

A conexão com o bd está sendo estabelecida através do arquivo hibernate.properties (inclusive ele gera a tabela automaticamente através das annotations).
O que está faltando para o hibernate reconhecer esta classe e persistir o objeto no bd?

Uma dúvida básica, Há diferença entre usar as annotations da JPA ao invés das hibernate annotations? Tipo, o hibernate sabe trabalhar normalmente com as annotations da JPA ou existem diferenças ao utilizar as classes que auxiliam as operações do CRUD?

MINHA CLASSE A SER PERSISTIDA

@org.hibernate.annotations.Entity
public class User {
	
	@Id
	@GeneratedValue
	@Column(name = "ID_USUARIO", nullable = false, length = 255)
	private Long id;
	
	@Column(name = "NM_NOME", nullable = false, length = 255)
	private String name;

	public Long getId() {
		return id;
	}

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

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

AGORA A CLASSE MAIN

public class TestaHibernate {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
			
		AnnotationConfiguration cfg = new AnnotationConfiguration();
		SessionFactory factory = cfg.buildSessionFactory();
		Session session = factory.openSession();
		
		com.b2winc.m3.hibernate.User usuario = new com.b2winc.m3.hibernate.User();		
		usuario.setName("Zé fulano");
		
		session.save(usuario);
		session.flush();
		session.close();
}

na escuta… :wink:

Pra ficar mais complicado ainda, neste projeto tb estou utilizando spring…

Naõ tem nada de complicado nisso ainda…

vc esta usando anotations…logo não precisa de arquivos xml para cada objeto a ser persisitido. Porém é preciso descrever no seu hibernate.cfg.xml as classes que são managed pelo Hibernate.

<mapping class=“br.com.suaempresa.classe” />

Já fez isso ???

Coloca seu arquivo .xml ai. :?

Eu não criei este arquivo por achar que não seria necessário por causa das annotations.

então eu vou ter que criar o arquivo hibernate.cfg.xml, mapear as classes no mesmo e repetir a configuração de mapeamento do bd, visto que a mesma está configurada no hibernate.properties?

Enquanto vocês respondem eu vou criando o tal arquivo…

hibernate.properties

Normalmente usamos o arquivo do hibernate.cfg.xml e nem sei se dá para usar o hibernate.properties provavelmente sim, só nunca usei.

Lá no seu xml vc ainda pode escrever qual o pool de conexão deseja usar já que o hibernate não pode ser posto em produção sem um poll de conexões adequado.

Recomendo o C3P0

o meu hibernate.cfg.xml está desta forma: (bem simples)

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<hibernate-configuration>
	<!-- a SessionFactory instance listed as /jndi/name -->
	<session-factory>
		<property name="dialect">
			org.hibernate.dialect.PointbaseDialect
		</property>
		<property name="connection.driver_class">
			com.pointbase.jdbc.jdbcUniversalDriver
		</property>
		<property name="connection.url">
			jdbc:pointbase:server://localhost:9093/weblogic_eval
		</property>
		<property name="connection.username">PBPUBLIC</property>
		<property name="connection.password">PBPUBLIC</property>
		<property name="hibernate.show_sql">true</property>
		<!-- mapping files -->
			<mapping class="com.hibernate.User"/>		
	</session-factory>

</hibernate-configuration>

mas não está aceitando o mapeamento da classe (o mapping não está reconhecendo o atributo class). É ali mesmo que fica este mapeamento? Tem um arquivo destes, completão, para eu usar como exemplo?

segue:

&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&gt;
&lt;hibernate-configuration&gt;
    &lt;session-factory&gt;
    
    &lt;!-- MySQL --&gt;
        &lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.MySQLDialect&lt;/property&gt;
        &lt;property name="hibernate.connection.driver_class"&gt;com.mysql.jdbc.Driver&lt;/property&gt;
        &lt;property name="hibernate.connection.url"&gt;jdbc:mysql://localhost/base&lt;/property&gt;
        &lt;property name="hibernate.connection.username"&gt;&lt;/property&gt;
        &lt;property name="hibernate.connection.password"&gt;&lt;/property&gt;
	&lt;!-- MySQL --&gt;
		
	&lt;!-- Oracle // 
        &lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.OracleDialect&lt;/property&gt;
        &lt;property name="hibernate.connection.driver_class"&gt;oracle.jdbc.driver.OracleDriver&lt;/property&gt;
        &lt;property name="hibernate.connection.url"&gt;jdbc:oracle:thin:@:1521:easyn0&lt;/property&gt;
        &lt;property name="hibernate.connection.username"&gt;&lt;/property&gt;
        &lt;property name="hibernate.connection.password"&gt; &lt;/property&gt;
    // Oracle --&gt;
        
	&lt;!-- Poll Conexões c3p0  --&gt;
  		&lt;property name="hibernate.c3p0.max_size"&gt;100&lt;/property&gt; 
  		&lt;property name="hibernate.c3p0.min_size"&gt;10&lt;/property&gt; 
  		&lt;property name="hibernate.c3p0.timeout"&gt;50000&lt;/property&gt; 
  		&lt;property name="hibernate.c3p0.max_statements"&gt;3000&lt;/property&gt; 
  		&lt;property name="hibernate.c3p0.acquire_increment"&gt;2&lt;/property&gt; 
  		&lt;property name="hibernate.c3p0.validate"&gt;false&lt;/property&gt; 
	&lt;!-- Poll Conexões c3p0 --&gt; 
    
    &lt;!-- Mapeamento das Classes --&gt;
    	&lt;mapping class="br.com.suaempresa.beans.classe" /&gt;
    	&lt;mapping class="br.com.suaempresa.beans.classe" /&gt;
    &lt;!-- Mapeamento das Classes --&gt;
    
    &lt;/session-factory&gt;
&lt;/hibernate-configuration&gt;

Cara, criei o arquivo, mapeei as classes mas continua dando erro. Não sei se o arquivo está no lugar certo, por isso criei uma cópia do mesmo em vários locais, tipo, na pasta META-INF, no src e na raiz do projeto e nada. Também criei o arquivo Persistence.xml com o mapeamento das classes e tambem espalhei ele por todo canto e nada. Tem alguma coisa a ver com o Spring? Sei lá, acrescentar algum mapeamento referente ao hibernate no applicationcontext.xml do Spring já que estas classes são beans do Spring? ???