Olá Pessoal,
estou estudando hibernate e para tal estou desenvolvendo uma pequena aplicação utilizando Java, Hibernate, BlazeDS e Adobe Flex.
Toda a lógica de negócio, bem como, as minhas classes que acessam as entidades (Daos, Sessions, HibernateUtil) estão sendo desenvolvida em um projeto a parte que depois eu exporto como um arquivo Jar para o meu projeto em Flex com BlazeDS.
O hibernate está configurado para fazer uso do LazyLoading, mas as vezes no meu projeto eu preciso que o hibernate recupere os objetos agregados de determinada entidade e outras vezes não. Para isso desenvolvi no DAO da minha entidade Cidade dois metodos que recuperam uma cidade pelo ID, um que carrega o objeto estado e outro que não carrega.
Dessa forma:
public Cidade findByIdWithFecthJoin(Cidade obj) throws HibernateException
{
Session session = null;
try
{
session = HibernateUtil.getSession();
return (Cidade) session.createCriteria(Cidade.class).setFetchMode("estado", FetchMode.JOIN).uniqueResult();
}
catch(HibernateException error)
{
throw new HibernateException(error);
}
finally
{
if (session != null)
session.close();
}
}
public Cidade findById(Cidade obj) throws HibernateException
{
Session session = null;
try
{
session = HibernateUtil.getSession();
eturn (Cidade) session.get(Cidade.class, obj.getId());
}
catch(HibernateException error)
{
throw new HibernateException(error);
}
finally
{
if (session != null)
session.close();
}
}
Só a titulo de contextualização minha classe cidade está assim:
public class Cidade
{
private Integer id;
private String nome;
private Estado estado;
(...)
}
Li a note site do Hibernate sobre openSession in View (https://www.hibernate.org/43.html) , porém não estou conseguindo achar uma forma de colocar isso em prática no meu projeto em Flex.
A solução acima funciona, porém não sei se é uma boa opção.
O que vocês acham?
Alguém já utilizou o OpenSession in view em projetos Flex + BlazeDS?
Gostaria de ouvir a opnião de vocês sobre possíveis problemas com a abordagem acima.