Estava vendo no site do Hibernate sobre o Hibernate Annotations e ele sempre mosttra exemplos com EJB3… é possivel fazer os mapeamentos e configurações do Hibernate sem usar EJB3 ? O que acho na net é sempre em relação a ejb3 :?
Hibernate Annotations
42 Respostas
o hibernate-annotations usa as anotações da Java Persistence API (ou seja, EJB3), mas tu pode usar estas anotações e continuar usando a API do Hibernate, ou pode pegar o hibernate-entitymanager e usar a API da JPA 
Tá… mas pra eu mapear os classes, definir tabelas e tal… consigo fazer td isso com as annotations sem precisar do ejb, certo?
Sabe onde tem tutorial sobre isso? Só achei com ejb 
Tá… mas pra eu mapear os classes, definir tabelas e tal… consigo fazer td isso com as annotations sem precisar do ejb, certo?
Sabe onde tem tutorial sobre isso? Só achei com ejb :(
Certo, você não precisa de EJB para rodar um aplicação com Hibernate + Annotations. Na documentação do hibernate tem tudo que você precisa. Como configurar o ambiente, como fazer os relacionamentos e etc.
http://www.hibernate.org/hib_docs/annotations/reference/en/html/
Até
Podem me chamar de burro, mas eu simplesmente não consigo desenvolver sem usar o esquema do EJB3!!! 
Fui atráz do entity manager, ele fala q eu consigo usar só pra mapear, mas todos os exemplos usam ejb3.
Eliezer Reis, aquele link que vc me passou só mostra como fazer um mapeamento usando ejb3!!!
Por exemplo… ele sempre mostra @Entity, mas isso eh exclusivo do ejb, não?
Se estou com o tomcat, nao posso adicionar o ejb3-persistence.jar.
Oq posso fazer??? :evil:
Não 
Leia bem a documentação e espero que fique mais claro 
andre_a_s, eu estava com o mesmo problema que você, mas agora está funcionando legal aqui. Vou tentar passar como consegui fazer funcionar:
:arrow: Hibernate, Hibernate-Annotations e Connector/J:
hibernate-3.2.0.cr2.zip
hibernate-annotations-3.2.0.CR1.zip
http://dev.mysql.com/downloads/connector/j/3.1.html
Obs: o Hibernate-Annotations requer a versão 3.2.0.CR2 do Hibernate ou superior…
:arrow: Libs que adicionei ao classpath:
antlr-2.7.6.jar i[/i]
asm.jar i[/i]
asm-attrs.jar i[/i]
dom4j-1.6.1.jar i[/i]
ehcache-1.2.jar i[/i]
ejb3-persistence.jar i[/i]
hibernate3.jar i[/i]
hibernate-annotations.jar i[/i]
jta.jar i[/i]
log4j-1.2.11.jar i[/i]
mysql-connector-java-3.1.10-bin.jar
cglib-2.1.3.jar i[/i]
commons-collections-2.1.1.jar i[/i]
commons-logging-1.0.4.jar i[/i]
:arrow: Tabela Contato:
CREATE TABLE Contato (
id BIGINT NOT NULL AUTO_INCREMENT,
nome VARCHAR(255),
email VARCHAR(255),
endereco VARCHAR(255),
PRIMARY KEY (id)
);
:arrow: hibernate.cfg.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!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.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/teste</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<mapping class="modelo.Contato"/>
</session-factory>
</hibernate-configuration>
:arrow: Session Factory:
package util;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new AnnotationConfiguration()
.configure()
.buildSessionFactory();
} catch (Throwable ex) {
// Log exception!
throw new ExceptionInInitializerError(ex);
}
}
public static Session getSession() throws HibernateException {
return sessionFactory.openSession();
}
}
:arrow: Classe Contato:
package modelo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Contato {
private Long id;
private String nome;
private String email;
private String endereco;
public Contato() {}
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
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;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
}
:arrow: Classe para teste:
package teste;
import modelo.Contato;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import util.HibernateUtil;
public class HibernateTeste {
public static void main(String[] args) {
try {
Contato contato = new Contato();
contato.setNome("teste hibernate");
Session session = HibernateUtil.getSession();
session.beginTransaction();
session.save(contato);
session.getTransaction().commit();
System.out.println("Gravado contato: " + contato.getId());
} catch (HibernateException e) {
e.printStackTrace();
}
}
}
Agora basta executar o HibernateTeste.
Espero ter ajudado. 
Se estou com o tomcat, nao posso adicionar o ejb3-persistence.jar.
Oq posso fazer??? :evil:
segundo a especificação do ejb3.0 vc pode usa-lo sem container ejb proprieamente dito. Ou seja usando a própria api de persistencia do java vc conseguirá persistir teus dados. Ex.:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("teste", new HashMap());
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
Cliente cliente = new Cliente("doido1", "av das couves");
em.persist(cliente);
tx.commit();
e tudo rodando fora do container!!
Cara eu ñ entendi direito este negócio do Entity Manager qual a vantagem e usa-lo? e q exatamente ele faz?
Oi,
Po, eu estou comecando a estudar sobre Hibernate Annotations, e queria copiar esse exemplo feito pelo Matheus Tardivo, mas esta acontencedo um pequeno erro.
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Exception in thread “main” java.lang.ExceptionInInitializerError
at util.HibernateUtil.(HibernateUtil.java:20)
at teste.HibernateTeste.main(HibernateTeste.java:17)
Caused by: java.lang.NoClassDefFoundError: org/hibernate/loader/custom/SQLQueryReturn
at org.hibernate.cfg.annotations.QueryBinder.bindSqlResultsetMapping(QueryBinder.java:293)
at org.hibernate.cfg.AnnotationBinder.bindQueries(AnnotationBinder.java:238)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:403)
at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:353)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:265)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1210)
at util.HibernateUtil.(HibernateUtil.java:16)
… 1 more
Alguem tem ideia o que poderia estar acontecendo?
Falows
Meu caro amigo [color=red][b][i]Matheus Tardivo[/color]
ao executar o seu exemplo obtive o seguinte Exception:
[color=red][b][i]java.lang.NoClassDefFoundError: org/hibernate/cfg/QuerySecondPass[/color]
Vc sabe o que pode ser???
Ps: estou usando postgreSQL
Escudero tira esse log4j o meu tv assim dando esse mesmo erro, eu acho que pode ser a versao mais eu so tirei e rodou beleza
Olá Matheus… tentei executar seu exemplo, seguindo a risca o que vc colocou, mas está dando o seguinte erro:
Exception in thread “main” java.lang.ExceptionInInitializerError
at hibernateannotations.HibernateUtil.(HibernateUtil.java:18)
at hibernateannotations.HibernateTeste.main(HibernateTeste.java:15)
Caused by: org.hibernate.HibernateException: Hibernate Dialect must be explicitly set
at org.hibernate.dialect.DialectFactory.determineDialect(DialectFactory.java:57)
at org.hibernate.dialect.DialectFactory.buildDialect(DialectFactory.java:39)
at org.hibernate.cfg.SettingsFactory.determineDialect(SettingsFactory.java:378)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:110)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1859)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1152)
at hibernateannotations.HibernateUtil.(HibernateUtil.java:15)
… 1 more
Java Result: 1
Tem idéia do que possa ser?
Obrigado
Tirar o log4j de onde?
hibernate.cfg.xml:<?xml version="1.0" encoding="UTF-8"?> <!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.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost/teste</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password"></property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property> <mapping class="modelo.Contato"/> </session-factory> </hibernate-configuration>Agora basta executar o HibernateTeste.
Espero ter ajudado.![]()
Uma dúvida, eu tb estou começando a estudar Hibernate-Annotation, qual a diferença entre “hibernate.cfg.xml” e hibernate.properties ???
Valew.
Oi,Po, eu estou comecando a estudar sobre Hibernate Annotations, e queria copiar esse exemplo feito pelo Matheus Tardivo, mas esta acontencedo um pequeno erro.
----
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.ExceptionInInitializerError
at util.HibernateUtil.(HibernateUtil.java:20)
at teste.HibernateTeste.main(HibernateTeste.java:17)
Caused by: java.lang.NoClassDefFoundError: org/hibernate/loader/custom/SQLQueryReturn
at org.hibernate.cfg.annotations.QueryBinder.bindSqlResultsetMapping(QueryBinder.java:293)
at org.hibernate.cfg.AnnotationBinder.bindQueries(AnnotationBinder.java:238)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:403)
at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:353)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:265)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1210)
at util.HibernateUtil.(HibernateUtil.java:16)
... 1 more
----Alguem tem ideia o que poderia estar acontecendo?
Falows
Cara, depois de alguns dias me debatendo a solução, creio que esteja usando TOM CAT, logo:
1-Criar a classe HibernateListener
/*
* HibernateListener.java
*
* Created on 15 de Dezembro de 2006, 08:46
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package Util;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class HibernateListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent event) {
HibernateUtil.getSessionFactory(); // Just call the static initializer of that class
}
public void contextDestroyed(ServletContextEvent event) {
HibernateUtil.getSessionFactory().close(); // Free all resources
}
}
<listener>
<listener-class>Util.HibernateListener</listener-class>
</listener>
3 - Colocar o seu hibernate.cfg.xml em WEB-INF/classes
É isso, milhões de erros podem acontecer mas este é o caminho. Espero ter ajudado.
Ref. [url]http://www.hibernate.org/114.html[/url]
hibernate.cfg.xml:<?xml version="1.0" encoding="UTF-8"?> <!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.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost/teste</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password"></property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property> <mapping class="modelo.Contato"/> </session-factory> </hibernate-configuration>Agora basta executar o HibernateTeste.
Espero ter ajudado.![]()
Uma dúvida, eu tb estou começando a estudar Hibernate-Annotation, qual a diferença entre “hibernate.cfg.xml” e hibernate.properties ???
Valew.
Caro colega, descobri que vc usa um ou outro. Ambos são para definir os dados de acesso e os mapeamentos. Estou usando o Hibernate com hibernate.cfg.xml está funcionando. Importante: Deve estar em web-inf/classes.
Aquele abraço.
cara ta dando esse erro aki no meu oq sera ???
17:58:23,378 INFO Environment:509 - Hibernate 3.2.2
17:58:23,418 INFO Environment:527 - loaded properties from resource hibernate.properties: {hibernate.connection.driver_class=com.mysql.jdbc.Driver, hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider, hibernate.max_fetch_depth=1, hibernate.dialect=org.hibernate.dialect.MySQLMyISAMDialect, hibernate.jdbc.use_streams_for_binary=true, hibernate.format_sql=true, hibernate.query.substitutions=yes 'Y', no 'N', hibernate.proxool.pool_alias=pool1, hibernate.connection.username=root, hibernate.cache.region_prefix=hibernate.test, hibernate.connection.url=jdbc:mysql://localhost:3306/hibernate, hibernate.bytecode.use_reflection_optimizer=false, hibernate.connection.password=****, hibernate.jdbc.batch_versioned_data=true, hibernate.connection.pool_size=1}
17:58:23,429 INFO Environment:558 - using java.io streams to persist binary types
17:58:23,429 INFO Environment:676 - Bytecode provider name : cglib
17:58:23,449 INFO Environment:593 - using JDK 1.4 java.sql.Timestamp handling
17:58:23,749 INFO Configuration:1426 - configuring from resource: /hibernate.cfg.xml
17:58:23,749 INFO Configuration:1403 - Configuration resource: /hibernate.cfg.xml
17:58:24,640 DEBUG DTDEntityResolver:38 - trying to resolve system-id [http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd]
17:58:24,640 DEBUG DTDEntityResolver:40 - recognized hibernate namespace; attempting to resolve on classpath under org/hibernate/
Initial SessionFactory creation failed.org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="net.feitoemcasa.Contato"/>
Exception in thread "main" java.lang.ExceptionInInitializerError
at net.feitoemcasa.hibernate.util.HibernateUtil.<clinit>(HibernateUtil.java:23)
17:58:24,720 DEBUG DTDEntityResolver:50 - located [http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd] in classpath
at net.feitoemcasa.cadastro.HibernateTeste.main(HibernateTeste.java:26)
17:58:24,891 DEBUG Configuration:1387 - hibernate.connection.driver_class=com.mysql.jdbc.Driver
Caused by: org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="net.feitoemcasa.Contato"/>
17:58:24,891 DEBUG Configuration:1387 - hibernate.connection.url=jdbc:mysql://localhost:3307/test
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1600)
17:58:24,911 DEBUG Configuration:1387 - hibernate.connection.username=root
17:58:24,911 DEBUG Configuration:1387 - hibernate.connection.password=root
17:58:24,911 DEBUG Configuration:1387 - hibernate.dialect=org.hibernate.dialect.MySQLDialect
17:58:24,941 DEBUG Configuration:1387 - show_sql=true
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1555)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1534)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1508)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1428)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1414)
at net.feitoemcasa.hibernate.util.HibernateUtil.<clinit>(HibernateUtil.java:14)
... 1 more
Java Result: 1
BUILD SUCCESSFUL (total time: 3 seconds)
cara ta dando esse erro aki no meu oq sera ???
17:58:23,378 INFO Environment:509 - Hibernate 3.2.2 17:58:23,418 INFO Environment:527 - loaded properties from resource hibernate.properties: {hibernate.connection.driver_class=com.mysql.jdbc.Driver, hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider, hibernate.max_fetch_depth=1, hibernate.dialect=org.hibernate.dialect.MySQLMyISAMDialect, hibernate.jdbc.use_streams_for_binary=true, hibernate.format_sql=true, hibernate.query.substitutions=yes 'Y', no 'N', hibernate.proxool.pool_alias=pool1, hibernate.connection.username=root, hibernate.cache.region_prefix=hibernate.test, hibernate.connection.url=jdbc:mysql://localhost:3306/hibernate, hibernate.bytecode.use_reflection_optimizer=false, hibernate.connection.password=****, hibernate.jdbc.batch_versioned_data=true, hibernate.connection.pool_size=1} 17:58:23,429 INFO Environment:558 - using java.io streams to persist binary types 17:58:23,429 INFO Environment:676 - Bytecode provider name : cglib 17:58:23,449 INFO Environment:593 - using JDK 1.4 java.sql.Timestamp handling 17:58:23,749 INFO Configuration:1426 - configuring from resource: /hibernate.cfg.xml 17:58:23,749 INFO Configuration:1403 - Configuration resource: /hibernate.cfg.xml 17:58:24,640 DEBUG DTDEntityResolver:38 - trying to resolve system-id [http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd] 17:58:24,640 DEBUG DTDEntityResolver:40 - recognized hibernate namespace; attempting to resolve on classpath under org/hibernate/ Initial SessionFactory creation failed.org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="net.feitoemcasa.Contato"/> Exception in thread "main" java.lang.ExceptionInInitializerError at net.feitoemcasa.hibernate.util.HibernateUtil.<clinit>(HibernateUtil.java:23) 17:58:24,720 DEBUG DTDEntityResolver:50 - located [http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd] in classpath at net.feitoemcasa.cadastro.HibernateTeste.main(HibernateTeste.java:26) 17:58:24,891 DEBUG Configuration:1387 - hibernate.connection.driver_class=com.mysql.jdbc.Driver Caused by: org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="net.feitoemcasa.Contato"/> 17:58:24,891 DEBUG Configuration:1387 - hibernate.connection.url=jdbc:mysql://localhost:3307/test at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1600) 17:58:24,911 DEBUG Configuration:1387 - hibernate.connection.username=root 17:58:24,911 DEBUG Configuration:1387 - hibernate.connection.password=root 17:58:24,911 DEBUG Configuration:1387 - hibernate.dialect=org.hibernate.dialect.MySQLDialect 17:58:24,941 DEBUG Configuration:1387 - show_sql=true at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1555) at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1534) at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1508) at org.hibernate.cfg.Configuration.configure(Configuration.java:1428) at org.hibernate.cfg.Configuration.configure(Configuration.java:1414) at net.feitoemcasa.hibernate.util.HibernateUtil.<clinit>(HibernateUtil.java:14) ... 1 more Java Result: 1 BUILD SUCCESSFUL (total time: 3 seconds)
Annotations funciona a partir do JDK 1.5 e pela linha 17:58:23,449 INFO Environment:593 - using JDK 1.4 java.sql.Timestamp handling vc está usando o 1.4
mas cara, to usando o 1.5_10 no meu pc…
e o projeto ta setado para java 1.5… 
favor mande a sua estrutura de diretório e seu hibernate.cfg.xml e confirme se não está havendo conflito com seus sdk’s.
[]'s
sempre o magooooooo causando hahahaha
me liga que aqui no banco estou trab tudo sem ejb3.
em vc esta usando as annotation de java ee 5 não qr dzr q vc esta com ejb 3 hahaha
derroooooooota
[s]
baiano
aki tb só consigo utilizando a ejb3-persistence.jar
pq quando tento usar o @Id, se eu nao importar de javax.persistence…
ele nao acha em lugar nenhum do hibernate…
como faria isso sem usar o jpa??
Gente,
eu tô com o mesmo problema do GustavoDelgado… alguém pra nos ajudar???
oi, pessoal
eu coloquei na minha classpath e tb na biblioteca do meu projeto todos os .jar do hibernate e do hibenate annotation… todos os exemplos q vejo usam esse AnnotationConfiguration… e no exemplo q peguei do Matheus, ele não acha esta classe…
tô travada nesse ponto… alguém pode me dar uma mão?
tô usando o netbeans 5.5, jdk 1.6.0, hibernate3.2.1, hibernate-annotation 3.2.0…
Seguindo esse exemplo ou a documentação oficial do Hibernate, não tem erro.
Veja se você realmente colocou os jars necessários no classpath da sua aplicação.
Chapter 1. Setting up an annotations project
Chapter 2. Entity Beans
Você está usando o Netbeans, certo? O problema é que ele não “acha” a classe AnnotationConfiguration? Qual é a mensagem de erro? 
Oi, Matheus…
Conferi um por um dos jar q vc citou no seu exemplo e realmente os coloquei no classpath(na verdade coloquei todos os jar do hibernate e do hibernate annotation) …
Esse é o erro q dá qdo executo…
Exception in thread "main" java.lang.ExceptionInInitializerError
at util.HibernateUtil.<clinit>(HibernateUtil.java:31)
at teste.HibernateTeste.main(HibernateTeste.java:29)
Caused by: org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="modelo.Contato"/>
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1597)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1552)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1531)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1505)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1425)
at util.HibernateUtil.<clinit>(HibernateUtil.java:26)
... 1 more
Java Result: 1
Como está o seu HibernateUtil?
Do jeito q vc me mandou...
package util;
import com.sun.xml.internal.xsom.parser.AnnotationContext;
import java.lang.*;
import java.text.Annotation;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.MappingException;
import org.hibernate.cfg.*;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new AnnotationConfiguration()
.configure()
.buildSessionFactory();
} catch (Throwable ex) {
// Log exception!
throw new ExceptionInInitializerError(ex);
}
}
public static Session getSession() throws HibernateException {
return sessionFactory.openSession();
}
}
MAtheus,
na hora de construir o projeto, dá este erro:
/root/EstudoHibernate/src/util/HibernateUtil.java:29: cannot find symbol
symbol : class AnnotationConfiguration
location: class util.HibernateUtil
sessionFactory = new AnnotationConfiguration()
^
1 error
FALHA NA EXECUÇÃO (tempo total: 2 segundos)
Tenho o seguinte erro apos seguir os passos descritos pelo Matheus Tardivo. Alguem pode ajudar? Estou usando o postgresql.
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
org.hibernate.exception.SQLGrammarException: could not retrieve generated id after insert: [modelo.Contato]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:69)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2044)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2481)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:47)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:290)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:180)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:108)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:537)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:525)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:521)
at teste.HibernateTeste.main(HibernateTeste.java:22)
Caused by: org.postgresql.util.PSQLException: ERROR: relation "contato_id_seq" does not exist
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1531)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1313)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:188)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:354)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:258)
at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:55)
... 16 more
Ja descobri… o nome da sequence q criei tava diferente.
As anotações são muito mais simples de configurar, tendo em vista que xml não é tão amigável assim, eu particularmente já pessei horas para detectar o problema por causa de um espaço em branco ou um erro ortográfico num arquivo xml. Com anotações não há possibilidade disto acontecer.
Outra vantagem é que para cada classe (entidade) persistivel vc tem que criar um hbm.xml e declarar no hibernate.cfg. Com anotações isto não acontece pois as configurações de pressistência já estão na própria classe através das anotações!
exelente tutorial… 
Então pessoal,
Qual a diferença entre eu usar o EntityManager que vem com o hibernate e apenas usar SessionFactory criado pela HibernateUtil descrita na documentação do hibernate…!!
Eu to meio confuso em relação a isso, porque se for usar o pacote do toplink que é da Oracle eu uso o EntityManager, agora com o Hibernate eu gostaria de saber qual a diferença entre essas duas opções…
Valew pessoal.
Da uma olhada em :
http://www.netbeans.org/kb/articles/hibernate-javaee.html
Você faz tudo sem digitar quase nada.
Pessoal, to brincando com annotations, comecei agora.
Estou com uma pequena dúvida: o Eclipse está dando erro com o “@Entity” declaado antes do nome da classe.
Meu projeto está configurado pra ser compilado com o JVM 5…
O que pode estar ocorrendo?
Obrigado!
Muito bom o tutorial !!!
facil de fazer só esqueceu de adicionar uma bilioteca que esqueci qual !
valeu
esta a tentar fazer o exemplo dado porem deu o seguinte erro:
Exception in thread "main" java.lang.ExceptionInInitializerError
at util.HibernateUtil.<clinit>(HibernateUtil.java:20)
at teste.HibernateTeste.main(HibernateTeste.java:17)
Caused by: java.lang.NoClassDefFoundError: org/hibernate/annotations/common/reflection/ReflectionManager
at util.HibernateUtil.<clinit>(HibernateUtil.java:14)
... 1 more
criei um projeto web, e estou tentando rodar o HibernateTeste em java aplication…
Alguem pode me ajudar?
pessoal alguém poderia me dizer qual a diferença entre Hibernate e Hibernate annotation?[color=red][/color][b]
esta a tentar fazer o exemplo dado porem deu o seguinte erro:
Exception in thread "main" java.lang.ExceptionInInitializerError at util.HibernateUtil.<clinit>(HibernateUtil.java:20) at teste.HibernateTeste.main(HibernateTeste.java:17) Caused by: java.lang.NoClassDefFoundError: org/hibernate/annotations/common/reflection/ReflectionManager at util.HibernateUtil.<clinit>(HibernateUtil.java:14) ... 1 morecriei um projeto web, e estou tentando rodar o HibernateTeste em java aplication…
Alguem pode me ajudar?
parece falta do arquivo hibernate-commons-annotations.jar na sua lib …
Escudero, voce deve ta importando o jar errado de outra versao do hibernate. De uma olhada no jar log4j se ta na versao correta, nesse forum tem um problema similar ao seu é foi resolvido dessa forma, endereco: http://www.guj.com.br/posts/list/59320.java
Pessoal,
Coloquei assim :
<mapping resource="com.kurtph.sistema.cliente.Cliente" />
mas mesmo problema,
segue a imagem
