Boa noite a todos do fórum,
Estou quebrando a cabeça aqui e não estão conseguindo fazer o Hibernate + Annotation, funcionar… Estou utilizando o Netbeans 5.0 +
hibernate-3.2.0.cr2
hibernate-annotations-3.2.0.CR1
Adicionei ao ClassPath os arquivos -
log4j.properties
hibernate.cfg
Arquivo 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 >
<!-- local connection properties -->
<property name="connection.driver_class">org.firebirdsql.jdbc.FBDriver</property>
<property name="connection.url">"jdbc:firebirdsql:127.0.0.1/3050:D:/BANCOESTA.FDB"</property>
<property name="connection.username">sysdba</property>
<property name="connection.password">masterkey</property>
<property name="dialect">org.hibernate.dialect.FirebirdDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- mapping files -->
<mapping package="modelo"/>
<mapping class="modelo.Estado"/>
</session-factory>
</hibernate-configuration>
Classe HibernateUtility
package controle;
import org.hibernate.*;
import org.hibernate.cfg.*;
public class HibernateUtility {
private static final SessionFactory factory;
private static final ThreadLocal sessionThread = new ThreadLocal();
private static final ThreadLocal transactionThread = new ThreadLocal();
static {
//Bloco estático que inicializa o Hibernate, escreve o stack trace se houver algum problema e relança a exceção
try {
factory = new AnnotationConfiguration().configure().buildSessionFactory();
} catch (RuntimeException e) {
e.printStackTrace();
throw e;
}
}
public static Session getSession() {
Session session = (Session) sessionThread.get();
if ( session == null || !session.isOpen() ) {
session = factory.openSession();
sessionThread.set( session );
}
return (Session) sessionThread.get();
}
public static void closeSession() {
Session session = (Session) sessionThread.get();
if ( session != null && session.isOpen() ) {
sessionThread.set(null);
session.close();
}
}
public static void beginTransaction() {
Transaction transaction = getSession().beginTransaction();
transactionThread.set(transaction);
}
public static void commitTransaction() {
Transaction transaction = (Transaction) transactionThread.get();
if ( transaction != null && !transaction.wasCommitted() && !transaction.wasRolledBack() ) {
transaction.commit();
transactionThread.set(null);
}
}
public static void rollbackTransaction() {
Transaction transaction = (Transaction) transactionThread.get();
if ( transaction != null && !transaction.wasCommitted() && !transaction.wasRolledBack() ) {
transaction.rollback();
transactionThread.set(null);
}
}
}
Classe Estado - Estou tentando fazer o mapeamento só para testar!
package modelo;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Estado implements Serializable {
@Id @GeneratedValue
private long id;
private String nome;
private String sigla;
public Estado() {
id=0;
nome="PARANA";
sigla="PR";
}
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 getSigla() {
return sigla;
}
public void setSigla(String sigla) {
if (sigla.length()==2){
this.sigla = sigla;
}
}
}
Classe Main
public static void main(String[] args) {
try {
Session session = HibernateUtility.getSession();
Transaction transaction = session.beginTransaction();
Estado estado = new Estado();
estado.setNome("Teste");
estado.setSigla("OR");
session.save(estado);
transaction.commit();
session.close();
} catch (HibernateException e) {
e.printStackTrace();
}
}
}
Ai o erro que aparece é esse:
2006-08-12 19:44:19,328 DEBUG hibernate.impl.SessionFactoryImpl -> Checking 0 named SQL queries
2006-08-12 19:44:19,375 DEBUG hibernate.impl.SessionImpl -> opened session at timestamp: 4732611212607488
2006-08-12 19:44:19,375 DEBUG hibernate.transaction.JDBCTransaction -> begin
2006-08-12 19:44:19,375 DEBUG hibernate.jdbc.ConnectionManager -> opening JDBC connection
2006-08-12 19:44:19,375 DEBUG hibernate.connection.DriverManagerConnectionProvider -> total checked-out connections: 0
2006-08-12 19:44:19,375 DEBUG hibernate.connection.DriverManagerConnectionProvider -> opening new JDBC connection
2006-08-12 19:44:19,375 DEBUG hibernate.util.JDBCExceptionReporter -> Cannot open connection [???]
java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getConnection(DriverManager.java:545)
at java.sql.DriverManager.getConnection(DriverManager.java:140)
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:417)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:118)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1319)
at hibernateteste.Main.main(Main.java:35)
2006-08-12 19:44:19,375 WARN hibernate.util.JDBCExceptionReporter -> SQL Error: 0, SQLState: 08001
2006-08-12 19:44:19,375 ERROR hibernate.util.JDBCExceptionReporter -> No suitable driver
org.hibernate.exception.JDBCConnectionException: Cannot open connection
Segue uma imagem dos jars adicionados! inclusive o do banco Firebird que estou tentando utilizar! Esse drive funciona normalmente em outra aplicacao JDBC
Se alguém puder ajudar! ficaria muito grato! já tentei bastante e nada!
Obrigado
Diego