Integrar Spring com JSF

Onde eu consigo um exemplo prático de como integrar um managed-bean de JSF com um bean do Spring?

http://blog.urubatan.com.br
Clica em publicações, e baixa o exemplo do WebDays deste ano.
Tem mais coisas no exemplo, tipo o spring-annotation, mas tem o que tu quer também :smiley:

Ricardo, o exemplo do WebDays do Urubatan é muito bom! Baixa que é muito útil!

Eu estou acabando um projetinho exemplo (Hibernate + Spring + JSF) (que eu fiz baseado nesse do Urubatan) bem simples, sem as annotatios do Hibernate e tb sem as spring-annotations que existem no exemplo WebDays… se vc quiser eu te envio ele quando eu terminar!

Acho que até esse domingo eu finalizo ele…

É isso aí!

Abraços!

Dgrava,
Estou tendo problemas ao carregar uma tela que tem objetos relacionados, tipo um Socio que tem uma Funcao, um Setor e uma Profissao.
Ele fica dando um monte de selects sem parar .

Como tu ta conseguindo resolver esses problemas de coleções ?

isto parece erro de mapeamento no hibernate, tu tem como colocar as classes mapeadas que estão entrando em loop ai pra darmos uma olhadinha?

Fala mestre Urubatan,

Eu tava com problema de lazy nas coleções então coloquei o openSessionInViewFilter no web.xml, parou de dar este problema.

Tenho dois graves problemas:

  1. Quando vou carregar uma página com uma h:dataTable(recebendo uma lista de sócios), ele fica dando select feito louco, como se tivesse carregando os objetos relacionados(setor, profissao…, etc.)

  2. Quando vou para a página de editar, selecionando um Sócio na h:dataTable ele fica que nem louco carregando todas as classes relacionadas até que estoura a memória heap.

HBM de Sócios

   	<?xml version="1.0"?>
	<!DOCTYPE hibernate-mapping PUBLIC
	    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
	    
	<hibernate-mapping default-lazy="true">
		<class  name="br.com.simcaweb.model.pojo.Socio" table="public.socios">	
			<id name="id" type="java.lang.Long">
		            <generator class="sequence">
		            	<param name="sequence">funcoes_seq</param>
		        	</generator>
		    </id>
		    <property name="nome" type="java.lang.String" not-null="true"/>
		    <property name="matricula" type="java.lang.String"/>
		    <property name="sexo" type="java.lang.String"/>
		   	<property name="formaTratamento" type="java.lang.String" column="formatratamento"/>
		   	<property name="nascimento" type="java.sql.Date"/>
		    <property name="email" type="java.lang.String"/>
		    <property name="recebeEmail" type="java.lang.String" column="recebeemailsn"/>
		    <property name="dataFiliacao" type="java.sql.Timestamp" column="datafiliacao"/>
		    <property name="dataRecebimento" type="java.sql.Timestamp" column="datarecebimento"/>
		    <property name="ativo" type="java.lang.String" column="ativosn"/>
		    <property name="licenca" type="java.lang.String" column="licencasn"/>
		    <property name="ipe" type="java.lang.String" column="ipesn"/>
		    <property name="dataCadastro" type="java.sql.Timestamp" column="datacadastro"/>
		    <property name="dataAtualizacao" type="java.sql.Timestamp" column="dataatualizacao"/>
		    <property name="dataDesativado" type="java.sql.Timestamp" column="datadesativado"/>
		    <property name="caminhoFoto" type="java.lang.String" column="caminhofoto"/>
		    <property name="cargaHoraria" type="java.lang.String" column="cargahoraria"/>
		    <property name="endereco" type="java.lang.String"/>
		    <property name="cidade" type="java.lang.String"/>
		    <property name="uf" type="java.lang.String"/>
		    <property name="cep" type="java.lang.String"/>
		    <property name="fone" type="java.lang.String"/>
		    <property name="celular" type="java.lang.String"/>
		    <property name="obs" type="java.lang.String"/>
		    <!-- Associations -->  
		    <!-- bi-directional many-to-one association to Instancia -->
		    <many-to-one
		        name="instancia"
		        class="br.com.simcaweb.model.pojo.Instancia"
		        not-null="true"
		        not-found="ignore"
		    >
		        <column name="instancia" />
		    </many-to-one>
		    <!-- bi-directional many-to-one association to Setore -->
		    <many-to-one
		        name="setor"
		        class="br.com.simcaweb.model.pojo.Setor"
		        not-null="true"
		        not-found="ignore"
		    >
		        <column name="setor" />
		    </many-to-one>
		    <!-- bi-directional many-to-one association to Funcoe -->
		    <many-to-one
		        name="funcao"
		        class="br.com.simcaweb.model.pojo.Funcao"
		        not-null="true"
		        not-found="ignore"
		    >
		        <column name="funcao" />
		    </many-to-one>
		    <!-- bi-directional many-to-one association to Regime -->
		    <many-to-one
		        name="regime"
		        class="br.com.simcaweb.model.pojo.Regime"
		        not-null="true"
		        not-found="ignore"
		    >
		        <column name="regime" />
		    </many-to-one>
		    <!-- bi-directional many-to-one association to Secretaria -->
		    <many-to-one
		        name="secretaria"
		        class="br.com.simcaweb.model.pojo.Secretaria"
		        not-null="true"
		        not-found="ignore"
		    >
		        <column name="secretaria" />
		    </many-to-one>
		    <!-- bi-directional many-to-one association to Profissoe -->
		    <many-to-one
		        name="profissao"
		        class="br.com.simcaweb.model.pojo.Profissao"
		        not-null="true"
		        not-found="ignore"
		    >
		        <column name="profissao" />
		    </many-to-one>
		</class>
	</hibernate-mapping>

HBM de Setor

	<?xml version="1.0"?>
	<!DOCTYPE hibernate-mapping PUBLIC
	    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
    
	<hibernate-mapping package="br.com.simcaweb.model.pojo" default-lazy="true">
	<class  name="Setor" table="public.setores">	
		<id name="id" type="java.lang.Long">
	            <generator class="sequence">
	            	<param name="sequence">setores_seq</param>
	        	</generator>
	    </id>
	    <property name="descricao" type="java.lang.String" not-null="true"/>
	    <!-- Associations -->  
	    <!-- bi-directional one-to-many association to Socio -->
	    <bag
	        name="socios"
	        inverse="true"
			cascade="all"
	    >
	        <key>
	            <column name="setor" />
	        </key>
	        <one-to-many 
	            class="Socio"
	        />
	    </bag>
	</class>
	</hibernate-mapping>   

tenta colocar o

&lt;bag name="socios" inverse="true" cascade="all" &gt; &lt;key&gt; &lt;column name="setor" /&gt; &lt;/key&gt; &lt;one-to-many class="Socio" /&gt; &lt;/bag&gt;

como lazy=true ou algo assim, acho que ele ta entrando em loop, por causa de referencias circulares.
ou então tenta só para testes remover as dependencias circulares do código.

Urubatan,
Removi as referências circulares e realmente melhorou bastante, mas ao tentar editar um socio, olha só o que acontence:

Hibernate: /* from Socio order by nome */ select socio0_.id as id, socio0_.nome as nome7_, socio0_.matricula as matricula7_, socio0_.sexo as sexo7_, socio0_.formatratamento as formatra5_7_, socio0_.nascimento as nascimento7_, socio0_.email as email7_, socio0_.recebeemailsn as recebeem8_7_, socio0_.datafiliacao as datafili9_7_, socio0_.datarecebimento as datarec10_7_, socio0_.ativosn as ativosn7_, socio0_.licencasn as licencasn7_, socio0_.ipesn as ipesn7_, socio0_.datacadastro as datacad14_7_, socio0_.dataatualizacao as Hibernate: /* load br.com.simcaweb.model.pojo.Setor */ select setor0_.id as id0_, setor0_.descricao as descricao6_0_ from public.setores setor0_ where setor0_.id=?
Hibernate: /* load br.com.simcaweb.model.pojo.Funcao */ select funcao0_.id as id0_, funcao0_.descricao as descricao1_0_ from public.funcoes funcao0_ where funcao0_.id=?
Hibernate: /* load br.com.simcaweb.model.pojo.Profissao */ select profissao0_.id as id0_, profissao0_.descricao as descricao4_0_ from public.profissoes profissao0_ where profissao0_.id=?
Hibernate: /* load br.com.simcaweb.model.pojo.Setor */ select setor0_.id as id0_, setor0_.descricao as descricao6_0_ from public.setores setor0_ where setor0_.id=?
Hibernate: /* load br.com.simcaweb.model.pojo.Funcao */ select funcao0_.id as id0_, funcao0_.descricao as descricao1_0_ from public.funcoes funcao0_ where funcao0_.id=?.............................

Ou seja, ele repete o Select algumas vezes e da load nos objetos várias vezes também.
O que será que poder ser isto ?