Todos ja devem saber as diferencas entre os metodos HTTP GET e POST.E facil saber que GET deve ser usado pra coisas mais simples e faceis como identificacao de paginas ou recursos, pois a quantidade de dados submetidos e limitada e todos podem ver os parametros na URL da submissao.Entao a maioria das submissoes de formulario utilizam o metodo POST, que nao tem limite de dados e envia os parametros, como dados de formularios, no corpo da mensagem.O fato e que ao montar a mensagem, pode ser informado o tipo de submissao que sera feita. E o mesmo que informar na tag "<"form">" o parametro "method=<'get'/'post'>". Ao usar um framework como o jquery , isso pode ser facilitado e abstraido, nesse caso utilizando o jQuery por exemplo. Usando a funcao ajax do jQuery pode-se informar o metodo utilizado na requisicao atraves do parametro type: jQuery.ajax({url: URL_AQUI, type: "POST"}).Porem essa diferenca trivial ocasionou um probleminha bem chato, e claro que com um pouquinho mais de atencao poderiamos resolver ou evitar a maior parte dos problemas de programacao (inclusive este).Aconteceu que ao desenvolver uma acao no sistema utilizei a funcao ajax do jquery para fazer a requisicao. Foi uma requisicao parecida com essa: jQuery.ajax({url:"url/requisicao?param1='xxx'&param2='yyy'", ...}.Porem quando uma quantidade muito grande de dados era submetida ocorria um erro na requisicao, por isso notei que deveria usar o metodo POST em vez do GET.Entao inclui o parametro type='POST' na requisicao. O problema persistiu. Depois de gastar varias horas (e neuronios), descobri que nao tinha resolvido o problema ainda.Se voce for um programador atento, ja pode ter percebido o problema.Quando alterei a requisicao par type='POST' informei que o metodo seria POST, porem nao alterei mais nada, entao os dados continuaram sendo submetidos via GET, pois continuavam na URL, mesmo que o metodo utilizado fosse POST, os dados estavam sendo inseridos no Cabecalho da requisicao, junto da URL.Entao pude resolver o problema dessa vez alterando o tipo para 'POST' conforme ja havia feito, porem inserindo os dados no corpo da requisicao, atraves do parametro data da funcao ajax: jQuery.ajax({url:"url/requisicao", type="POST", dataType="json", data="{'param1':'xxx','param2':'yyy'}"}. O parametro data pode ser informado utilizando a notacao JSON. *Isso foi apenas um exemplo, logicamente esses parametros nao utrapassam o limite de uma requisicao GET.Viu?! Apenas um pouco de atencao!! Em varios casos em que existe um relacionamento one-to-many parent/child e desejado excluir as entidades "filho" quando a entidade "pai" for excluida. Entao nesses casos existe a configuracao DELETE_ORPHAN que pode ser feita na colecao de filhos da entidade pai para este fim://Classe Pai@javax.persistence.OneToMany(mappedBy = "pai")@Cascade({CascadeType.DELETE_ORPHAN })private java.util.Collection filhos;Ao tentar chamar o metodo merge() na entidade Pai foi gerada uma excecao:"HibernateSystemException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: ..."Ao estudar os estados de objetos e outros artigos constatei que o problema acontecia porque ao fazer merge eu nao havia carregado os "filhos" na entidade Detached pai. Entao resolvi o problema carregando os filhos da entidade carregada (na sessao Hibernate) nos filhos da entidade Detached para depois mesclar, da seguinte forma:pai.setFilhos(((Pai)session.get(Pai.class, pai.getId())).getFilhos());session.merge(pai);Dessa forma a alteracao com merge e exclusao da