Problema com hibernate!

eae, galera…to tentando aqui fazer uma aplicação com hibernate e estou tendo dificuldade, tô achando que é alguma besteira grande que eu não estou vendo hehe
Vou colocar logo tudo aqui, que eu posso ta cometendo algum erro na configuração

valeu galera :wink:


package com.canix.hibernate.config;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.classic.Session;

import com.canix.hibernate.beans.Produto;

public class HibernateUtil {
	
	private static SessionFactory factory;
	
	static{
		AnnotationConfiguration cfg = new AnnotationConfiguration();
		cfg.addAnnotatedClass(Produto.class);
		factory = cfg.buildSessionFactory();
		}
	
	public Session getSession(){
		return factory.openSession();
	}

}

HibernateUtil



package com.canix.hibernate.beans;


import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Produto {
	
    @Id
    @GeneratedValue
	private long id;
	
	private String nome;
	
	private  double preco;


	
	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 double getPreco() {
		return preco;
	}

	public void setPreco(double preco) {
		this.preco = preco;
	}


	
	

}

Produto



package com.canix.hibernate.config;

import org.hibernate.Session;
import com.canix.hibernate.beans.Produto;

public class ProdutoDAO {
	
	private Session session;
	
	
	
	public ProdutoDAO(Session session){
		this.session = session;
	}
	
	public void salvar(Produto p){
		this.session.save(p);
	}
	
	public void remover(Produto p){
		this.session.delete(p);
		this.session.flush();
	}
	
	public Produto pesquisar(Long id){
		return (Produto) this.session.load(Produto.class, id);
	}
	
	public void atualiza(Produto p){
		this.session.update(p);
		this.session.flush();
	}
	
	

}

ProdutoDAO



function iniciarRequisicao() {
	
	 var request = false;  
	             try 
	             {  
	                 request = new XMLHttpRequest();  
	             }
	             catch (trymicrosoft) 
	             {  
	                 try 
	                 {  
	                     request = new ActiveXObject("Msxml2.XMLHTTP");  
	                 } 
	                 catch (othermicrosoft) 
	                 {  
	                     try 
	                     {  
	                         request = new ActiveXObject("Microsoft.XMLHTTP");  
	                     } catch (failed) 
	                     {  
	                         request = false;  
	                     }    
	                 }
	                 
	             }  
	return request;
}
function cadastrar()
{
	var nome=document.getElementById("nome").value;
	var preco=document.getElementById("preco").value;
	var url=null;
	
	
	url="ajax/ajaxCadastro.jsp?comando=cadastrar&nome="+nome+"&preco="+preco;
	
	var requisicaoLocal=iniciarRequisicao();
	requisicaoLocal.onreadystatechange=function ()
	{
		respostaCadastrar(requisicaoLocal);
	}
	requisicaoLocal.open("GET",url,'false');
	requisicaoLocal.send(null);

}
function respostaCadastrar(requisicao) 
{
	if(requisicao.readyState==4)
	{
		if(requisicao.status==200)
		{
			var xml=requisicao.responseXML;
		}
	}
}

Cadastrar.js



<%@page import="com.canix.hibernate.beans.Produto"%>
<%@page import="com.canix.hibernate.config.ProdutoDAO"%>
<%@page import="com.canix.hibernate.config.HibernateUtil"%>
<%@page import="org.hibernate.Session"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<jsp:useBean id="Produto" class="com.canix.hibernate.beans.Produto" scope="page">
	<jsp:setProperty name="Produto" property="*"/>
</jsp:useBean>	

<%

String comando = request.getParameter("comando");

if(comando.equals("cadastrar")){
	
	System.out.println("teste");

	Session session2 = new HibernateUtil().getSession();
	
	
	ProdutoDAO dao =  new ProdutoDAO(session);
	Produto p = new Produto();
	
	dao.salvar(p);
	session.close();

	
}






%>

ajaxCadastro.js



hibernate.connection.driver_class=org.postgresql.Driver
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
hibernate.connection.url=jdbc:postgresql://localhost/teste
hibernate.connection.username=postgres
hibernate.connection.password=1q2w3e

hibernate.properties



<?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.cglib.use_reflection_optimizer">true</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.format_sql">true</property>

    
    
    <mapping class="com.canix.hibernate.beans.Produto" />
   
    
  </session-factory>
</hibernate-configuration>

hibernate.hbm.xml

eu coloquei esses anexos, mais foi sem querer…

Você tem q usar o properties ou o XML, os dois juntos não funcionam, não que eu tenha visto.

ok, configurei tudo no properties, mais continua dando erro…

segue o erro:


An error occurred at line: 21 in the jsp file: /ajax/ajaxCadastro.jsp
The constructor ProdutoDAO(HttpSession) is undefined
18: 	Session session2 = new HibernateUtil().getSession();
19: 	
20: 	
21: 	ProdutoDAO dao =  new ProdutoDAO(session);
22: 	Produto p = new Produto();
23: 	
24: 	dao.salvar(p);


An error occurred at line: 25 in the jsp file: /ajax/ajaxCadastro.jsp
The method close() is undefined for the type HttpSession
22: 	Produto p = new Produto();
23: 	
24: 	dao.salvar(p);
25: 	session.close();
26: 
27: 	
28: }


Stacktrace:
	at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
	at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
	at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:312)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:299)
	at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	at java.lang.Thread.run(Thread.java:636)

O erro é

The constructor ProdutoDAO(HttpSession) is undefined

significa

O COnstrutor da classe ProdutoDAO que recebe um HttpSession não existe

e de novo

o erro

The method close() is undefined for the type HttpSession

significa

O método close() não está definido para o tipo HttpSession

provavelmente o primeiro erro é por causa do segundo

e pelo que eu lembro, um HttpSession não possui o método close()

mas caso vc queira tirar algo da sua sessão, vc pode usar o removeAtributte(String) ou o invalidate(), que tira tudo

edit:

agora q eu vi

o session é do hibernate

vc adicionou o import errado

edit 2:

esse import está errado

import org.hibernate.classic.Session;

não use nada do classic, usa o org.hibernate.Session

edit 3:

    Session session2 = new HibernateUtil().getSession();   
       
       
    ProdutoDAO dao =  new ProdutoDAO(session);  

ai vc cria o session2, mas usa o session

esse session é um HttpSession

edit 4:

não me lembro, mas

<%@page import="com.canix.hibernate.beans.Produto"%>   
<%@page import="com.canix.hibernate.config.ProdutoDAO"%>   
<%@page import="com.canix.hibernate.config.HibernateUtil"%>   
<%@page import="org.hibernate.Session"%> 

eu não me lembro mas, em vez de ter 4 declarações de import, elas não deveriam ser separadas por virgula e ter apenas uma declaração de import??