RestFul com Hibernate

8 respostas
douglascst90

Bom dia galera, estou com problemas em criar um webservise tipo restful com o hibernate, alguem poderia me ajudar com isso, algum tutorial um site que explique sobre isso???

Desde já agradeço, abraços.

8 Respostas

alias

douglascst90:
Bom dia galera, estou com problemas em criar um webservise tipo restful com o hibernate, alguem poderia me ajudar com isso, algum tutorial um site que explique sobre isso???

Desde já agradeço, abraços.

Bom…mas o Hibernate nao tem nada a ver com criação de serviços Rest, né? :wink:

Coloque ai qual o seu cenário e qual o problema.

douglascst90

Seguinte, tenho meu ws que precisa ser gravado no banco os dados que eu envio da minha app do android, e o msm ws gera um json da tabela x, mas o problema que aqui esta jdbc, quero migrar meu ws para o hibernate.

alias

Ok, então vamos considerar que NAO há nenhum problema com o seu serviço, e sim com a persistencia. O que você quer mudar é a maneira como os dados são gravados e lidos, e não a maneira como você expoe a coisa. Correto?

Qual está sendo o problema ai com o Hibernate?

douglascst90

Nao estou conseguindo persisti no banco, segue a minha classe ClienteResource:

@POST
    @Path("/inserirLista")
    public String inserirLista(String listaClientesJson) {
     Gson gson = new Gson();
     ArrayList<Cliente> listaClientes = new ArrayList<Cliente>();
     JsonParser parser = new JsonParser();
     JsonArray array = parser.parse(listaClientesJson).getAsJsonArray();
     
        for (int i = 0; i < array.size(); i++) {
         listaClientes.add(gson.fromJson(array.get(i), Cliente.class));
     }
     System.out.print("Passou aqui...");
     try
     {
     
     MBCliente mbCliente = new MBCliente();
     mbCliente.inserirLista(listaClientes);
     //return new MBCliente().inserirLista(listaClientes);
     }
     catch(Exception e){
         System.out.println("ERRO " + e.getMessage());
     }
          return listaClientesJson;
    }

Metodo salvar da minha MBCliente

public String inserirLista(ArrayList<Cliente> listaClientes) throws Exception { ClienteDAO clienteDAO = new ClienteDAO(); String retorno = ""; try { for (int i = 0; i < listaClientes.size(); i++) { if(clienteDAO.salvar(listaClientes.get(i)) < 1) { retorno += "Erro ao inserir o cliente de CPF: "+ listaClientes.get(i).getCpf() +"\n"; } } if(retorno.length() == 0) { retorno = "Lista de clientes inserida no banco com sucesso!"; System.out.print("Passou aqui... MB 2"); } } catch(Exception e) { System.out.print("ERRO aqui " + e.getMessage()); } return retorno; }

E por fim o metodo do meu ClienteDAO:

Session session = null;
    Transaction transaction = null;
    
    public int salvar(Cliente cliente) throws Exception {
         
		try 
                {
		session = HibernateUtil.getSessionFactory().openSession();
		transaction = session.beginTransaction();
		session.saveOrUpdate(cliente);
		transaction.commit();
                
                System.out.print("PAssou aki... DAO 1");
		} 
                catch (Exception e) 
                {
                  System.out.print("ERRO... DAO 1");
		  transaction.rollback();
		  throw new Exception("Erro ao salvar!");
            
		}finally{
                session.close();
                }
               return 0;
	}
alias

e qual exceção está ocorrendo ai?

douglascst90

Desculpe esqueci de postar a exception

Informações: Initiating Jersey application, version 'Jersey: 1.5 01/14/2011 12:36 PM' Informações: WEB0671: Loading application [WSDroiMap] at [/WSDroiMap] Informações: WSDroiMap foi implementado com êxito em 3.062 milisegundos. Informações: Passou aqui... Informações: Hibernate Annotations 3.3.1.GA Informações: cleaning up connection pool: jdbc:postgresql://localhost:5432/droidmap Informações: Hibernate 3.2.5 Informações: hibernate.properties not found Informações: Bytecode provider name : cglib Informações: using JDK 1.4 java.sql.Timestamp handling Informações: configuring from resource: /hibernate.cfg.xml Informações: Configuration resource: /hibernate.cfg.xml Informações: Configured SessionFactory: null Informações: Binding entity from annotated class: br.com.droid.model.Cliente Informações: Bind entity br.com.droid.model.Cliente on table tb_contribuinte Informações: Hibernate Validator not found: ignoring Informações: Using Hibernate built-in connection pool (not for production use!) Informações: Hibernate connection pool size: 20 Informações: autocommit mode: false Informações: using driver: org.postgresql.Driver at URL: jdbc:postgresql://localhost:5432/droidmap Informações: connection properties: {user=postgres, password=****} Informações: RDBMS: PostgreSQL, version: 9.1.2 Informações: JDBC driver: PostgreSQL Native Driver, version: PostgreSQL 9.1 JDBC4 (build 901) Informações: Using dialect: org.hibernate.dialect.PostgreSQLDialect Informações: Using default transaction strategy (direct JDBC transactions) Informações: No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended) Informações: Automatic flush during beforeCompletion(): disabled Informações: Automatic session close at end of transaction: disabled Informações: JDBC batch size: 15 Informações: JDBC batch updates for versioned data: disabled Informações: Scrollable result sets: enabled Informações: JDBC3 getGeneratedKeys(): enabled Informações: Connection release mode: auto Informações: Default batch fetch size: 1 Informações: Generate SQL with comments: disabled Informações: Order SQL updates by primary key: disabled Informações: Order SQL inserts for batching: disabled Informações: Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory Informações: Using ASTQueryTranslatorFactory Informações: Query language substitutions: {} Informações: JPA-QL strict compliance: disabled Informações: Second-level cache: enabled Informações: Query cache: disabled Informações: Cache provider: org.hibernate.cache.NoCacheProvider Informações: Optimize cache for minimal puts: disabled Informações: Structured second-level cache entries: disabled Informações: Echoing all SQL to stdout Informações: Statistics: disabled Informações: Deleted entity synthetic identifier rollback: disabled Informações: Default entity-mode: pojo Informações: Named query checking : enabled Informações: building session factory Informações: ERRO aqui null

douglascst90
Alias, para ser mais exato, quando faço o debug no meu codigo, ele gera o erro na classe ClienteDAO:
Session session = null;
    Transaction transaction = null;
    
    public int salvar(Cliente cliente) throws Exception {
         
		try 
                {
		session = HibernateUtil.getSessionFactory().openSession();
		transaction = session.beginTransaction();
		session.saveOrUpdate(cliente);
		transaction.commit();
                
                System.out.print("PAssou aki... DAO 1");
		} 
                catch (Exception e) 
                {
                  System.out.print("ERRO... DAO 1");
		  transaction.rollback();
		  throw new Exception("Erro ao salvar!");
            
		}finally{
                session.close();
                }
               return 0;
	}
Quando eu chego nessa linha
session = HibernateUtil.getSessionFactory().openSession();
ele ja pula para o session.close();
alias

esse log que voce postou ocorre no momento em que voce tenta abrir a sessão, correto? foi isso que o hibernate nao conseguiu fazer…os parametros de inicialização que voce está passando pra ele estão todos certinhos, no seu arquivo de configuração?

Criado 7 de março de 2012
Ultima resposta 7 de mar. de 2012
Respostas 8
Participantes 2