Hibernate - FetchMode e OpenSession in View

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.

Pessoal,
dando uma olhada e rodando uns testes aqui percebi que meu método falha em alguns casos e dispara uma exception de nonUniqueValue.
Modifiquei o metódo e rodei os testes e agora está ok.


	public Cidade findByIdWithFecthJoin(Cidade obj) throws HibernateException
	{
		Session session = null;
		
		try
		{
			session = HibernateUtil.getSession();
			return (Cidade) session.createCriteria(Cidade.class).setFetchMode("estado", FetchMode.JOIN).add(Restrictions.eq("id", obj.getId())).uniqueResult();

		}
		catch(HibernateException error)
		{
			throw new HibernateException(error);
		}
		finally
		{
			if (session != null)
				session.close();
		}
	}

Mas ainda gostaria de ouvir sobre essa abordagem.
O que acham?