Get/Set atributos Tipo Objetos

Olá Pessoal!
Tenho a seguinte classe:

 package bean;
import bean.Titulacao;
public class Professor {
private int pfr_id;
private String pfr_matricula;
private String pfr_nome;
private Titulacao pfr_titulacao

public int getPfr_id() {
return pfr_id;
}
public void setPfr_id(int pfr_id) {
this.pfr_id = pfr_id;
}
public String getPfr_matricula() {
return pfr_matricula;
}
public void setPfr_matricula(String pfr_matricula) {
this.pfr_matricula = pfr_matricula;
}
public String getPfr_nome() {
return pfr_nome;
}
public void setPfr_nome(String pfr_nome) {
this.pfr_nome = pfr_nome;
}
public Titulacao getPfr_titulacao() {
return pfr_titulacao;
}
public void setPfr_titulacao(Titulacao pfr_titulacao) {
this.pfr_titulacao = pfr_titulacao;
}

} 

No formulário de manutenção de Professores, o campo TITULACAO é um ComboBox com todas as titulações cadastradas e ao ser selecionado me disponibiliza o ID da titulação. Como passei a usar o Hibernate, o atributo Titulação passou de Integer para Objeto Titulação. Como faço para usar o Get/Set da Titulacao sendo este um Objeto e o que retorna ou é enviado para o formulário é um Integer?

Achei um forma de utilizar o Set/Get, porém não sei se é a melhor:

Get

  	 	Titulacao titulacao = professor.getPfr_titulacao(); --> retorna o Objeto Titulacao da Classe Professor
		int tit = titulacao.getTtl_id(); --------------------------> retorna o ID do objeto Titulação da classe Titulacao

Set

                int titId = Integer.parseInt(request.getParameter("titId")); --> request campo Titulacao do FORM.HTML	
	        Titulacao titulacao = titulacaoDao.getTitulacao(tit); ------> retorna Objeto Titulação de acordo com o titID
	        professor.setPfr_titulacao(titulacao); ----------------------> executa o método Set     

Grato.

Bom… vc teve a duvida e a resposta!
Está correto!

Vc tb pode fazer isso utilizsando linkedInvocation, do tipo

tit = professor.getPfr_titulacao().getTtl_id(); 

Interessante essa solução… vou implementar e testar.

	public List getListaProfessores() throws SistemaException {
		List<Professor> todosProfessores = new ArrayList();			
		try {			
			Session session = ConexaoHibernate.getSession();								
			Query select = session.createQuery("from bean.Professor as professor order by professor.pfr_nome");
			todosProfessores =  select.list();								
			session.close();				
			
		} 
		catch (Exception ex){ 
			throw new SistemaException("ProfessorDao","getListaProfessor","Não foi possível buscar lista Professor Cadastrados no banco de dados.\n" + ex.getMessage(), "query");			
		}
		return todosProfessores;
	}

Como já mencionei anteriormente, eu passei a implementar o Hibernate no meu projeto. Preciso confirmar se sempre que executar um Query no bean.Professor ele trará automaticamente o bean.Titulação, em função do “many-to-one”, ou preciso fazer o Join Titulacao na query?

[quote=FlavioMaia]Como já mencionei anteriormente, eu passei a implementar o Hibernate no meu projeto. Preciso confirmar se sempre que executar um Query no bean.Professor ele trará automaticamente o bean.Titulação, em função do “many-to-one”, ou preciso fazer o Join Titulacao na query?
[/quote]

No hibernate existe uma politica de carregamento das informações de referencia, chamada de LazyLoading. Com isso, se vc tem, Pedido HAS-A Set e o lazy da entidade Pedido está como True, assim que vc fizer o getItensPedido(), ele executará a query e carregará as informações, CASO A SESSÃO AINDA ESTEJA VÁLIDA!!!

Verifique a configuração do seu lazy…

Complementando o item anterior, ao implementar o código abaixo:

				<td class="CelLinDir"><%=professor.getPfr_titulacao().getTtl_descricao()%></td>								

Deu o seguinte erro:

16:38:34,500 ERROR LazyInitializationException:19 - could not initialize proxy - no Session
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
	at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:57)
	at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111)
	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:150)
	at bean.Titulacao$$EnhancerByCGLIB$$eb54b4ee.getTtl_descricao(<generated>)
	at org.apache.jsp.professor_005flst_jsp._jspService(professor_005flst_jsp.java:104)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
	at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
	at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
	at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)
	at org.apache.jsp.professor_jsp._jspService(professor_jsp.java:59)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Thread.java:595)
could not initialize proxy - no Session
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
	at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:57)
	at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111)
	at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:150)
	at bean.Titulacao$$EnhancerByCGLIB$$eb54b4ee.getTtl_descricao(<generated>)
	at org.apache.jsp.professor_005flst_jsp._jspService(professor_005flst_jsp.java:104)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
	at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
	at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
	at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)
	at org.apache.jsp.professor_jsp._jspService(professor_jsp.java:59)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Thread.java:595)

Até então eu listava somente a Matrícula e o Nome, e agora implementei a Titulação, conforme a dica enviada: linkedInvocation.

Ainda bem que meu tópico veio antes do seu…
A sessão precisa estar aberta para o lazy funcionar, caso ele esteja com o lazy ativado.

Alguns links!

http://www.javalobby.org/java/forums/t20533.html - Understanding Lazy Fetching
http://www.hibernate.org/162.html - Some explanations on lazy loading
http://www.hibernate.org/43.html - Open Session in View

Olá Rodrigo!
Acessei os links mencionados por você e como utilizo DAO, coloquei em comentário a linha que fecha a sessão e funcionou.

		try {			
			Session session = ConexaoHibernate.getSession();								
			Query select = session.createQuery("from bean.Professor as professor order by professor.pfr_nome");
			todosProfessores =  select.list();								

			//session.close();				
			
		} 

Você comentou em configurar o Lazy para true, infelizmente não entendi como colocar isso no Professor.hbm.xml:

	<class name="Professor" table="professor">
	
		<!-- Identificador da classe -->
    	<id name="pfr_id">
    		<generator class="increment"/>
    	</id>
 
    	<!-- Propriedades da classe -->
    	<property name="pfr_matricula"/>
    	<property name="pfr_nome"/> 
    	<property name="pfr_qtdHoras"/> 
    	<many-to-one name="pfr_titulacao" class="bean.Titulacao" column="pfr_titulacao" 
    	/> 
	</class>

Obrigado pela atenção.

Boas
alguem me pode dar uma ajuda nisto?
estou a fazer loading de um objecto com uma relação de many to many e tenho sempre este erro…

Hibernate: select dbartigos0_.id as id0_0_, dbartigos0_.descricao as descricao0_0_, dbartigos0_.observacoes as observac3_0_0_, dbartigos0_.quantidade_existente as quantidade4_0_0_, dbartigos0_.quantidade_ideal as quantidade5_0_0_, dbartigos0_.quantidade_disponivel as quantidade6_0_0_, dbartigos0_.peso as peso0_0_, dbartigos0_.volume as volume0_0_, dbartigos0_.inventario as inventario0_0_, dbartigos0_.situacao as situacao0_0_, dbartigos0_.etiqueta as etiqueta0_0_ from DBARTIGOS dbartigos0_ where dbartigos0_.id=? Hibernate: select dbdepartam0_.DBDEPARTAMENTO_ID as DBDEPART1_0_, dbdepartam0_.DBARTIGOS_ID as DBARTIGOS2_0_ from DBDEPARTAMENTO_TO_DBARTIGOS dbdepartam0_ where dbdepartam0_.DBDEPARTAMENTO_ID=? Exception in thread "AWT-EventQueue-0" org.hibernate.HibernateException: CGLIB Enhancement failed: fact.dbdepartamento at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.getProxy(CGLIBLazyInitializer.java:96) at org.hibernate.proxy.pojo.cglib.CGLIBProxyFactory.getProxy(CGLIBProxyFactory.java:49) at org.hibernate.tuple.entity.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:379) at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3455) at org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:257) at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:191) at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:103) at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)

Solved:)
faltava um construtor sem parametros…