Olá pessoal…
estou tendo dificuldades aqui na manipulação correta das sessions e transactions do hibernate…
queria saber qual a melhor maneira de manipulá-las…
eu estou abrindo e fechando as sessões nos métodos das classes DAO…
exemplo, esse é meu ClienteDAO
public class ClienteDAO {
public ClienteDAO() {
}
Session sessao = HibernateUtil.getSessionFactory().openSession();
Transaction tx = sessao.beginTransaction();
public void insere(Cliente cli) throws Exception {
sessao.save(cli);
tx.commit();
sessao.close();
}
public Cliente get(Long id) {
List clientes = sessao.createQuery("from Cliente c where c.id='"+id.toString()+"'").list();
tx.commit();
sessao.close();
for ( Iterator iter = clientes.iterator(); iter.hasNext(); ) {
Cliente c = (Cliente) iter.next();
return c;
}
return null;
}
(...)
mexendo apenas com o cliente tá indo ok… o grande problema está quando eu começo a adicionar os outros atributos do Cliente… como Dependente, Endereço do Dependente, etc… ele fica passando null…
eu já fiz inúmeros testes e acredito que seja por causa da forma como estou fazendo o commit e o close…
mas tbm suspeito que seja meu mapeamento…
esse é meu mapeamento de cliente:
<hibernate-mapping>
(...)
<list name="dependentes" inverse="true" cascade="all" lazy="true" >
<key column="id_cliente"/>
<list-index column="posicao"/>
<one-to-many class="model.Dependente"/>
</list>
(...)
</hibernate-mapping>
esse é o mapeamento de dependente:
<many-to-one
name="endereco"
class="model.Endereco"
column="endereco"
cascade="save-update"
unique="true"/>
Agradeço muito qualquer ajuda.
Abraços!
