Hibernate + Oracle + Erro conexao [RESOLVIDO]

9 respostas
G
Olá sou novo no uso do hibernate eu tenho as seguintes classes: Usuario
package teste_bd;

public class Usuario {
 private String matricula;
 private String nome;
 private String senha;
 private boolean administrador;

 public void setMatricula(String matricula){
    this.matricula = matricula;
 }
 public void setNome(String nome){
    this.nome = nome;
 }
 public void setSenha(String senha){
    this.senha = senha;
 }
 public void setAdministrador(boolean administrador){
     this.administrador = administrador;
 }
 public String getMatricula(){
 return this.matricula;
 }
 public String getNome(){
 return this.nome;
 }
 public String getSenha(){
 return this.senha;
 }
 public boolean getAdministrador(){
 return this.administrador;
 }
}
O Mapeamento dela
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping
PUBLIC"Hibernate Mapping">
<hibernate-mapping>
    <class name="Usuario" table="Usuario">
        <id column="matricula" name="id">
            <generator class ="increment"/>
        </id>
        <property name="nome"/>
        <property name="senha"/>
        <property name="administrador"/>
    </class>
</hibernate-mapping>
O 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>
        <!-- Página 9 -->
        <!-- Database connection settings -->
        <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="connection.url">jdbc:oracle:thin://localhost</property>

        <property name="connection.username">SYS</property>
        <property name="connection.password">123456</property>
        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">5</property>
        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.OracleDialect</property>
        <!-- Enable Hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</property>
        <!-- Disable the second-level cache -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>
        <!-- Drop and re-create the database schema on startup -->

        <property name="hbm2ddl.auto">create</property>
        
        <mapping resource="Usuario.hbm.xml"/>
    </session-factory>
</hibernate-configuration>
O HibernateUtility
package teste_bd;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

/**
 *
 * @author Germano
 */
public class HibernateUtility {
    private static SessionFactory factory;
    static{
        try{
            factory = new Configuration().configure().buildSessionFactory();
        }
        catch(Exception e){
            e.printStackTrace();
            factory = null;
        }
    }
    public static Session getSession(){
        return factory.openSession();
    }

}
A classe principal
package teste_bd;

import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author Germano
 */
public class Teste {
    public static void main(String[] args){
    Session sessao = HibernateUtility.getSession();
    Transaction transaction = sessao.beginTransaction();
    Usuario usuario= new Usuario();
    usuario.setMatricula("123456");
    usuario.setNome("teste");
    sessao.save(usuario);
    transaction.commit();
    sessao.close();
    }

}
Quando eu tento executar a classe principal acontece o seguinte erro
24/07/2010 18:35:34 org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.2.5
24/07/2010 18:35:34 org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
24/07/2010 18:35:34 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : cglib
24/07/2010 18:35:34 org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
24/07/2010 18:35:34 org.hibernate.cfg.Configuration configure
INFO: configuring from resource: /hibernate.cfg.xml
24/07/2010 18:35:34 org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: Configuration resource: /hibernate.cfg.xml
org.hibernate.HibernateException: /hibernate.cfg.xml not found
        at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:147)
        at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:1405)
        at org.hibernate.cfg.Configuration.configure(Configuration.java:1427)
        at org.hibernate.cfg.Configuration.configure(Configuration.java:1414)
        at teste_bd.HibernateUtility.<clinit>(HibernateUtility.java:15)
        at teste_bd.Teste.main(Teste.java:17)
Exception in thread "main" java.lang.NullPointerException
        at teste_bd.HibernateUtility.getSession(HibernateUtility.java:23)
        at teste_bd.Teste.main(Teste.java:17)
Java Result: 1

Alguem poderia me ajudar a entender o que está errado e como fazer funcionar?

9 Respostas

A

o arquivo hibernate.cfg.xml não estar cendo encontrado se estover usando o netbeans basta copialo no pacote padrao e limpa o projeto.
e executar so e necessario limpar o projeto se o aruivo for maodificado uo copiado para la como sitei.

ou voce pode especificar o endereco do arquivo na chamada do .configure

G

Vlw mesmo passei a tarde batendo cabeça com isso
Agora está dando outro erro :frowning:

24/07/2010 19:01:16 org.hibernate.cfg.Environment <clinit> INFO: Hibernate 3.2.5 24/07/2010 19:01:16 org.hibernate.cfg.Environment <clinit> INFO: hibernate.properties not found 24/07/2010 19:01:16 org.hibernate.cfg.Environment buildBytecodeProvider INFO: Bytecode provider name : cglib 24/07/2010 19:01:16 org.hibernate.cfg.Environment <clinit> INFO: using JDK 1.4 java.sql.Timestamp handling 24/07/2010 19:01:16 org.hibernate.cfg.Configuration configure INFO: configuring from resource: /hibernate.cfg.xml 24/07/2010 19:01:16 org.hibernate.cfg.Configuration getConfigurationInputStream INFO: Configuration resource: /hibernate.cfg.xml 24/07/2010 19:01:16 org.hibernate.cfg.Configuration addResource INFO: Reading mappings from resource : Usuario.hbm.xml 24/07/2010 19:01:16 org.hibernate.util.XMLHelper$ErrorLogger error SEVERE: Error parsing XML: XML InputStream(3) White spaces are required between publicId and systemId. org.hibernate.InvalidMappingException: Could not parse mapping document from resource Usuario.hbm.xml at org.hibernate.cfg.Configuration.addResource(Configuration.java:569) at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1587) 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 teste_bd.HibernateUtility.<clinit>(HibernateUtility.java:15) at teste_bd.Teste.main(Teste.java:17) Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from input stream at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:508) at org.hibernate.cfg.Configuration.addResource(Configuration.java:566) ... 8 more Caused by: org.dom4j.DocumentException: Error on line 3 of document : White spaces are required between publicId and systemId. Nested exception: White spaces are required between publicId and systemId. at org.dom4j.io.SAXReader.read(SAXReader.java:482) at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:499) ... 9 more Exception in thread "main" java.lang.NullPointerException at teste_bd.HibernateUtility.getSession(HibernateUtility.java:23) at teste_bd.Teste.main(Teste.java:17) Java Result: 1

R

Olá , se voce esta iniciando em hibernate , sugiro fortemente usar annotation no lugar de xml , muito mais pratico!

voce seu progeto esta definico com jdk 1.4 ?

INFO: using JDK 1.4 java.sql.Timestamp handling

o arquivo hibernate.cfg.cml esta na pasta src do projeto ?
qual IDE esta usando ?

G

Olá Ricardo Yukito eu acabei de resolver o problema do XML.
Vou dar uma olhada nesse famoso anotations mas por enquanto quero apenas fazer funcionar mesmo.
Os problemas de xml estão resolvidos porém apareceu um erro ainda mais doido.

run: 24/07/2010 19:38:36 org.hibernate.cfg.Environment <clinit> INFO: Hibernate 3.2.5 24/07/2010 19:38:36 org.hibernate.cfg.Environment <clinit> INFO: hibernate.properties not found 24/07/2010 19:38:36 org.hibernate.cfg.Environment buildBytecodeProvider INFO: Bytecode provider name : cglib 24/07/2010 19:38:36 org.hibernate.cfg.Environment <clinit> INFO: using JDK 1.4 java.sql.Timestamp handling 24/07/2010 19:38:36 org.hibernate.cfg.Configuration configure INFO: configuring from resource: /hibernate.cfg.xml 24/07/2010 19:38:36 org.hibernate.cfg.Configuration getConfigurationInputStream INFO: Configuration resource: /hibernate.cfg.xml 24/07/2010 19:38:36 org.hibernate.cfg.Configuration addResource INFO: Reading mappings from resource : Usuario.hbm.xml 24/07/2010 19:38:36 org.hibernate.cfg.HbmBinder bindRootPersistentClassCommonValues INFO: Mapping class: Usuario -> Usuario 24/07/2010 19:38:36 org.hibernate.cfg.Configuration doConfigure INFO: Configured SessionFactory: null 24/07/2010 19:38:36 org.hibernate.connection.DriverManagerConnectionProvider configure INFO: Using Hibernate built-in connection pool (not for production use!) 24/07/2010 19:38:36 org.hibernate.connection.DriverManagerConnectionProvider configure INFO: Hibernate connection pool size: 5 24/07/2010 19:38:36 org.hibernate.connection.DriverManagerConnectionProvider configure INFO: autocommit mode: false 24/07/2010 19:38:36 org.hibernate.connection.DriverManagerConnectionProvider configure INFO: using driver: oracle.jdbc.driver.OracleDriver at URL: jdbc:oracle:thin://localhost 24/07/2010 19:38:36 org.hibernate.connection.DriverManagerConnectionProvider configure INFO: connection properties: {user=SYS, password=****} 24/07/2010 19:38:36 org.hibernate.cfg.SettingsFactory buildSettings WARNING: Could not obtain connection metadata java.sql.SQLException: Exceção de E/S: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4)))) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:187) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:229) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:342) at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:415) at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:485) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:337) at java.sql.DriverManager.getConnection(DriverManager.java:582) at java.sql.DriverManager.getConnection(DriverManager.java:154) at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110) at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:84) at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292) at HibernateUtility.<clinit>(HibernateUtility.java:15) at Teste.main(Teste.java:17) 24/07/2010 19:38:36 org.hibernate.dialect.Dialect <init> INFO: Using dialect: org.hibernate.dialect.Oracle10gDialect 24/07/2010 19:38:37 org.hibernate.transaction.TransactionFactoryFactory buildTransactionFactory INFO: Using default transaction strategy (direct JDBC transactions) 24/07/2010 19:38:37 org.hibernate.transaction.TransactionManagerLookupFactory getTransactionManagerLookup INFO: No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended) 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory buildSettings INFO: Automatic flush during beforeCompletion(): disabled 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory buildSettings INFO: Automatic session close at end of transaction: disabled 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory buildSettings INFO: Scrollable result sets: disabled 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory buildSettings INFO: JDBC3 getGeneratedKeys(): disabled 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory buildSettings INFO: Connection release mode: auto 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory buildSettings INFO: Default batch fetch size: 1 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory buildSettings INFO: Generate SQL with comments: disabled 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory buildSettings INFO: Order SQL updates by primary key: disabled 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory buildSettings INFO: Order SQL inserts for batching: disabled 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory createQueryTranslatorFactory INFO: Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory 24/07/2010 19:38:37 org.hibernate.hql.ast.ASTQueryTranslatorFactory <init> INFO: Using ASTQueryTranslatorFactory 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory buildSettings INFO: Query language substitutions: {} 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory buildSettings INFO: JPA-QL strict compliance: disabled 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory buildSettings INFO: Second-level cache: enabled 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory buildSettings INFO: Query cache: disabled 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory createCacheProvider INFO: Cache provider: org.hibernate.cache.NoCacheProvider 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory buildSettings INFO: Optimize cache for minimal puts: disabled 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory buildSettings INFO: Structured second-level cache entries: disabled 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory buildSettings INFO: Echoing all SQL to stdout 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory buildSettings INFO: Statistics: disabled 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory buildSettings INFO: Deleted entity synthetic identifier rollback: disabled 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory buildSettings INFO: Default entity-mode: pojo 24/07/2010 19:38:37 org.hibernate.cfg.SettingsFactory buildSettings INFO: Named query checking : enabled 24/07/2010 19:38:37 org.hibernate.impl.SessionFactoryImpl <init> INFO: building session factory 24/07/2010 19:38:37 org.hibernate.impl.SessionFactoryObjectFactory addInstance INFO: Not binding factory to JNDI, no JNDI name configured 24/07/2010 19:38:37 org.hibernate.tool.hbm2ddl.SchemaExport execute INFO: Running hbm2ddl schema export 24/07/2010 19:38:37 org.hibernate.tool.hbm2ddl.SchemaExport execute INFO: exporting generated schema to database 24/07/2010 19:38:37 org.hibernate.tool.hbm2ddl.SchemaExport execute SEVERE: schema export unsuccessful java.sql.SQLException: Exceção de E/S: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4)))) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:187) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:229) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:342) at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:415) at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:485) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:337) at java.sql.DriverManager.getConnection(DriverManager.java:582) at java.sql.DriverManager.getConnection(DriverManager.java:154) at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110) at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:27) at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:180) at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:133) at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:311) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294) at HibernateUtility.<clinit>(HibernateUtility.java:15) at Teste.main(Teste.java:17) 24/07/2010 19:38:37 org.hibernate.util.JDBCExceptionReporter logExceptions WARNING: SQL Error: 17002, SQLState: null 24/07/2010 19:38:37 org.hibernate.util.JDBCExceptionReporter logExceptions SEVERE: Exceção de E/S: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4)))) Exception in thread "main" org.hibernate.exception.GenericJDBCException: Cannot open connection at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29) at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:426) at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144) at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119) at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57) at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326) at Teste.main(Teste.java:18) Caused by: java.sql.SQLException: Exceção de E/S: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4)))) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:187) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:229) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:342) at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:415) at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:485) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:337) at java.sql.DriverManager.getConnection(DriverManager.java:582) at java.sql.DriverManager.getConnection(DriverManager.java:154) at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110) at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423) ... 5 more Java Result: 1 CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)

R

isso ta com cara de que nao ta conectando no banco

tava vendo seu .cgf.xml

deixa seu url assim ,
jdbc:oracle:thin:@localhost:1521:XE

G

Era isso mesmo! vlw mesmo!!!

R

outra coisa se naa me engano a create é usada pra gerar o banco apartir das classes, se voce nao remover ela toda ve que for fazer uma persistencia ele vai refazer o banco.

att.

A

e cara sem duvida usar JPA e muito melhor que os mapeamentos xml
e sem contar que voce mapeia tudo na sua propria entidade.

G

Sem duvida, eu tenho visto uns exemplos é bem tentador mas o projeto já está em mais da metade mapeado.
Então reverter isso agora seria um tanto complicado.
Mas para o proximo sem duvida JPA nele.

Abraços e grato pelas dicas e auxilio

Criado 24 de julho de 2010
Ultima resposta 26 de jul. de 2010
Respostas 9
Participantes 3