Ajudo com JSF+Hibernate

0 respostas
J

Ola Pessoal,

Estou iniciando um projeto e gostaria de utilizar JSF com Hibernate. Apos modelar minha base e fazer teste gerais de insercao/recuperacao de dados com programas java simples usando o hibernate comecei a tentar integrar tudo.

Apos pesquisar um pouco achei IDE Exadel (www.exadel.com) que eh bem completo embora nao gratuito. Ele permite modelar a navegacao entre as paginas de modo grafico o que facilita as coisas.

Logicamente o tutorial do Exadel com uma pagina bem simples funciona (sem hibernate), mas depois as coisas se complicam. Estou tentando simplesmente recuperar de um banco de dados um dado que quero mostrar em uma pagina JSP.

Para comecar, utilizando as facilidades do Exadel, construi os arquivos de mapeamento para o hibernate. Ai defini um bean chamado CursoDAO que tem uma propriedade denominada nome para a qual eu quero recuperar o dado da tabela do BD. Neste Bean, criei um metodo getNome, e estou tentando utilizar o hibernate (exatamente o mesmo codigo que funcionou nos meus testes) e a classe de mapeamento para recuper o valor da tabela. Nao consigo de jeito nenhum. Tenho como mensagem: Error getting property ´nome´ of type sw3a.beans.logic.CursoDAO: java.lang.ExceptionInInitializerError.

Sera que o erro eh ligado a nicializacao do hibernate? Com o JSF eh necessario fazer algo mais?

Sera que alguem pode dar uma LUZ? Alguem ja desenvolveu algo com JSF+Hibernate? Ja procurei na net por referencias mas nao achei nada de concreto. Pra ajudar passo abaixo uns pedacos do codigo.

Um abraco e obrigado,

celso

Arquivo de configuracao do Hibernate

<?xml version="1.0" encoding="UTF-8"?>
&lt;!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "hibernate-configuration-3.0.dtd"&gt;

&lt;hibernate-configuration&gt; 
  &lt;session-factory&gt; 
    &lt;property name="hibernate.connection.driver_class"&gt;org.postgresql.Driver&lt;/property&gt;
    &lt;property name="hibernate.connection.password"&gt;EloPSQL&lt;/property&gt;
    &lt;property name="hibernate.connection.url"&gt;jdbc:postgresql://localhost:5432/SW3A&lt;/property&gt;
    &lt;property name="hibernate.connection.username"&gt;postgres&lt;/property&gt;
    &lt;property name="hibernate.cp3o.max_size"&gt;3&lt;/property&gt;
    &lt;property name="hibernate.cp3o.min_size"&gt;1&lt;/property&gt;
    &lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.PostgreSQLDialect&lt;/property&gt;
    &lt;property name="hibernate.show_sql"&gt;true&lt;/property&gt;
    &lt;mapping resource="sw3a/hibernate/Cursos.hbm.xml"/&gt;
    &lt;mapping resource="sw3a/hibernate/Questionario.hbm.xml"/&gt;
  &lt;/session-factory&gt;
&lt;/hibernate-configuration&gt;

Bean que “deveria” se conectar ao BD

package sw3a.beans.logic;
import org.hibernate.*;
import org.hibernate.criterion.Expression;
import javax.faces.context.*;
import javax.faces.el.ValueBinding;

import sw3a.hibernate.Cursos;
import sw3a.hibernate.HibernateUtil;

public class CursoDAO {
	String nome;
	
	public String getNome()  {
		Session session = HibernateUtil.currentSession();
		Transaction tx = session.beginTransaction();

		// Cria o Objeto Curso para Engenharia Elétrica
		Cursos ele = (Cursos) session.createCriteria(Cursos.class)
			.add(Expression.eq("Sigla", "ELE")).uniqueResult();
		
		System.out.println("Curso: " + ele.getNome());
		nome = ele.getNome();

		tx.commit();
		HibernateUtil.closeSession();

		return ele.getNome();
	}
}

Pagina JSF que tenta usar o Bean

&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
&lt;f:loadBundle basename="sw3a.properties.messages" var="msgs"/&gt;

&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;&lt;/title&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;f:view&gt;
			&lt;h2&gt;
				As escolhas feitas foram:
			&lt;/h2&gt;
			<p>
				<b>&lt;h:outputText value="#{msgs.semesterT} "/&gt;</b>
				&lt;h:outputText value="#{questionarioBean.semestre}"/&gt;
				&lt;h:outputText value="#{cursoDAO.nome}"/&gt;
			</p>
			<p>
				<b>&lt;h:outputText value="#{msgs.yearT} "/&gt;</b>
				&lt;h:outputText value="#{questionarioBean.ano}"/&gt;
			</p>
		&lt;/f:view&gt;
	&lt;/body&gt;	
&lt;/html&gt;

Finalmente o arquivo de configuração do JSF

<?xml version="1.0" encoding="UTF-8"?>
&lt;!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
                              "http://java.sun.com/dtd/web-facesconfig_1_1.dtd"&gt;
&lt;faces-config&gt;
 &lt;managed-bean&gt;
  &lt;managed-bean-name&gt;questionarioBean&lt;/managed-bean-name&gt;
  &lt;managed-bean-class&gt;sw3a.beans.data.QuestionarioBean&lt;/managed-bean-class&gt;
  &lt;managed-bean-scope&gt;request&lt;/managed-bean-scope&gt;
  &lt;managed-property&gt;
   &lt;property-name&gt;semestre&lt;/property-name&gt;
   &lt;value/&gt;
  &lt;/managed-property&gt;
  &lt;managed-property&gt;
   &lt;property-name&gt;ano&lt;/property-name&gt;
   &lt;value/&gt;
  &lt;/managed-property&gt;
 &lt;/managed-bean&gt;
 &lt;managed-bean&gt;
  &lt;managed-bean-name&gt;cursoDAO&lt;/managed-bean-name&gt;
  &lt;managed-bean-class&gt;sw3a.beans.logic.CursoDAO&lt;/managed-bean-class&gt;
  &lt;managed-bean-scope&gt;request&lt;/managed-bean-scope&gt;
 &lt;/managed-bean&gt;
 &lt;navigation-rule&gt;
  &lt;from-view-id&gt;/pages/insereQuest.jsp&lt;/from-view-id&gt;
  &lt;navigation-case&gt;
   &lt;from-outcome&gt;mostra&lt;/from-outcome&gt;
   &lt;to-view-id&gt;/pages/mostraQuest.jsp&lt;/to-view-id&gt;
  &lt;/navigation-case&gt;
 &lt;/navigation-rule&gt;
 &lt;lifecycle/&gt;
 &lt;application&gt;
  &lt;locale-config/&gt;
 &lt;/application&gt;
 &lt;factory/&gt;
&lt;/faces-config&gt;
Criado 18 de agosto de 2005
Respostas 0
Participantes 1