Olá a todos!
Eu estou a quase 1 mês tentando fazer uma pequena aplicação em
java com hibernate usando o eclipse 3.0 e até agora só bati na trave.
Eu preciso muito de ajuda.
Para ficar mais fácil eu vou detalhar o que eu fiz.
Eu estou usando o banco de dados FireBird na raiz da máquina (C:\FSCONTROL.GDB).
No banco de dados eu tenho uma tabela chamada Contas com os seguintes campos:
ID_CONTAS INTEGER (Chave primária)
DESCRICAO VARCHAR(30)
Eu criei um projeto chamado hibernate no diretório C:\esclipse\worksapce\hibernate.
- Criei uma classe Contas no diretório scr do meu projeto:
public class Contas {
private long id;
private String descricao;
public Contas() {}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
}
- Criei um xml Contas.hbm.xml no diretório scr do meu projeto:
<?xml version=“1.0”?>
<!DOCTYPE hibernate-mapping PUBLIC
“-//Hibernate/Hibernate Mapping DTD//EN”
“<a href="http://hibernate.sourceforge.net/hibernate-mapping.dtd">http://hibernate.sourceforge.net/hibernate-mapping.dtd</a>”>
<hibernate-mapping>
<class name=“Contas” table=“Contas”>
<id column=“ID_CONTAS” name=“id” type=“long”>
<generator class=“assigned”/>
</id>
<property column “DESCRICAO” name=“descricao” type=“string”/>
</class>
</hibernate-mapping>
- Alterei e coloquei no diretório scr do meu projeto o xml hiberbate.cfg.xml:
<?xml version=“1.0”?>
<!DOCTYPE hibernate-configuration PUBLIC
“-//Hibernate/Hibernate Configuration DTD 3.0//EN”
“http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd”>
<hibernate-configuration>
<session-factory name="/Fabrica01">
<property name=“hibernate.connection.url”>jdbc:firebirdsql:localhost:C:/FSCONTROL.GDB</property>
<property name=“hibernate.connection.username”>SYSDBA</property>
<property name=“hibernate.connection.password”>masterkey</property>
<property name=“hibernate.connection.driver_class”>org.firebirdsql.jdbc.FBDriver</property>
<property name=“hibernate.dialect”>net.sf.hibernate.dialect.InterbaseDialect</property>
<property name=“hibernate.show_sql”>true</property>
<mapping resource=“Contas.hbm.xml” />
<class-cache
class=“org.hibernate.test.Simple”
region=“Simple”
usage=“read-write”/>
</session-factory>
</hibernate-configuration>
- Para fazer o teste criei uma classe teste ContasDao onde eu configuro e faço uma pequena consulta.
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Session;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.cfg.Configuration;
public class ContasDao {
public static void main(String[] args) {
try {
// Cria uma configuração para a classe Produto
Configuration cfg = new Configuration().addClass(Contas.class);
SessionFactory factory = cfg.buildSessionFactory();
Session session = factory.openSession();
Contas encontrado = (Contas) session.load(Contas.class, new Long(1));
System.out.println(encontrado.getDescricao());
session.close();
factory.close();
} catch (HibernateException e) {
e.printStackTrace();
}
}
}
-
Copiei todos os aquivos da pasta lib do hibernate e o driver jdbc do firebird para a pasta lib do
meu projeto. -
Quando eu rodo a aplicação como Run/Java Application/Schema Export da o seuinte erro no console:
(cfg.Environment 462 ) Hibernate 2.1.4
(cfg.Environment 491 ) hibernate.properties not found
(cfg.Environment 522 ) using CGLIB reflection optimizer
(cfg.Configuration 347 ) Mapping resource: Contas.hbm.xml
(cfg.Binder 229 ) Mapping class: Contas -> Contas
(cfg.Configuration 613 ) processing one-to-many association mappings
(cfg.Configuration 622 ) processing one-to-one association property references
(cfg.Configuration 647 ) processing foreign key constraints
(cfg.SettingsFactory 50 ) No dialect set - using GenericDialect: The dialect was not set. Set the property hibernate.dialect.
(dialect.Dialect 82 ) Using dialect: net.sf.hibernate.dialect.GenericDialect
(cfg.SettingsFactory 62 ) Use outer join fetching: false
(connection.UserSuppliedConnectionProvider 25 ) No connection properties specified - the user must supply JDBC connections
(transaction.TransactionManagerLookupFactory 33 ) No TransactionManagerLookup configured (in JTA environment, use of process level read-write cache is not recommended)
(cfg.SettingsFactory 102 ) Use scrollable result sets: false
(cfg.SettingsFactory 105 ) Use JDBC3 getGeneratedKeys(): false
(cfg.SettingsFactory 108 ) Optimize cache for minimal puts: false
(cfg.SettingsFactory 117 ) Query language substitutions: {}
(cfg.SettingsFactory 128 ) cache provider: net.sf.ehcache.hibernate.Provider
(cfg.Configuration 1093) instantiating and configuring caches
(impl.SessionFactoryImpl 119 ) building session factory
(impl.SessionFactoryObjectFactory 82 ) no JNDI name configured
Exception in thread “main” java.lang.UnsupportedOperationException: The user must supply a JDBC connection
at net.sf.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:32)
at net.sf.hibernate.impl.BatcherImpl.openConnection(BatcherImpl.java:278)
at net.sf.hibernate.impl.SessionImpl.connect(SessionImpl.java:3302)
at net.sf.hibernate.impl.SessionImpl.connection(SessionImpl.java:3282)
at net.sf.hibernate.impl.BatcherImpl.prepareQueryStatement(BatcherImpl.java:65)
at net.sf.hibernate.loader.Loader.prepareQueryStatement(Loader.java:704)
at net.sf.hibernate.loader.Loader.doQuery(Loader.java:185)
at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:133)
at net.sf.hibernate.loader.Loader.loadEntity(Loader.java:836)
at net.sf.hibernate.loader.Loader.loadEntity(Loader.java:856)
at net.sf.hibernate.loader.EntityLoader.load(EntityLoader.java:59)
at net.sf.hibernate.loader.EntityLoader.load(EntityLoader.java:51)
at net.sf.hibernate.persister.EntityPersister.load(EntityPersister.java:419)
at net.sf.hibernate.impl.SessionImpl.doLoad(SessionImpl.java:2113)
at net.sf.hibernate.impl.SessionImpl.doLoadByClass(SessionImpl.java:1987)
at net.sf.hibernate.impl.SessionImpl.load(SessionImpl.java:1916)
at ContasDao.main(ContasDao.java:28)
Eu também tentei rodar a aplicação com as outras opções mas também dão erros.
Eu gostria que alguém me orientasse onde que eu errei no código ou se eu fiz um procedimento errado. Em fim me ajudem…