Hibernate .. cascade

estou com bastante duvida quanto aos cascade, o que cada um significa, tipo, se eu colocar cascade=“sabe-update” numa relacao one-to-one o que acontece??

eu estou com um relacionamento entre instituicao e endereco de one-to-one, em endereco a chave primaria eh uma chave estrangeira para instituicao e no xml de instituicao eu coloquei cascade=“save-update”, nao esta dando erro de execucao, mais ele consegue buscar o endereco mas nao consegue inserir, tem haver com o cascade??? se tiver qual q eu coloco???

aguardando resposta…
obrigado.

vamo la galera, por favor, me ajudem, to quebrando cabeça com isso a um tempao…
ai vai o codigo:
endereco.xml

    <class name="org.cronos.persistencia.bean.Endereco" table="`Endereco`">
        <id name="codigoInstituicao" column="`codigoInstituicao`">
            <generator class="foreign">
                <param name="property">instituicao</param>
            </generator>
        </id>

        <!--  propertys  -->

        <one-to-one name="instituicao" class="org.cronos.persistencia.bean.Instituicao" constrained="true"/>

usuario.xml

    <class name="org.cronos.persistencia.bean.Instituicao" table="`Instituicao`">
        <id name="codigo">
            <generator class="increment"/>
        </id>

        <property name="inscricaoEstadual" column="`inscricaoEstadual`" length="20"/>
        <!-- propertys  -->

        <one-to-one name="endereco" class="org.cronos.persistencia.bean.Endereco" cascade="save-update"/>

up??

Então olh ao que acontece, se você não colocar cascade na instituição quando vc adicionar o endereço na instituição e tentar salvar, vai retornar um erro reclamando de um objeto detached, ou seja, você tentou inserir uma instituição com referência a um endereço mas não salvou o endereço. Ao colocar cascade no nó mais forte, no caso instituição ao salvar a instituição automaticamente o hibernate considera que você também quer salvar o endereço e ja faz isto para você.

Exemplo sem cascade :

DAO<Instituicao> DAOInstituicao = DAOFactory.getDAO(Instituicao.class);
DAO<Endereco> DAOEndereco = DAOFactory.getDAO(Endereco.class);

Instituicao inst = new instituicao();
Endereco end = new Endereco();

inst.setNome("teste");
end.setRua("Rua de Teste");
inst.adicionaEndereco(end);

DAOEndereco .persist(end);
DAOInstituicao.persiste(inst);

Obs: Lembrando que no seu DAO existe o begginTransation e comit…

Exemplo com cascade :

DAO<Instituicao> DAOInstituicao = DAOFactory.getDAO(Instituicao.class);

Instituicao inst = new instituicao();
Endereco end = new Endereco();

inst.setNome("teste");
end.setRua("Rua de Teste");
inst.adicionaEndereco(end);

DAOInstituicao.persiste(inst);