SóProvas


ID
240736
Banca
FCC
Órgão
TRT - 8ª Região (PA e AP)
Ano
2010
Provas
Disciplina
Programação
Assuntos

Os três estados de objeto definidos pelo framework Hibernate são:

Alternativas
Comentários
  • O Hibernate define e suporta os seguintes estados de objetos:

    Transient - um objeto é transiente se ele foi instanciando usando apenas o operador new e não foi associado a uma Session do Hibernate. Ele não possui uma representação persistente no banco de dados e não lhe foi atribuído nenhum identificador. Instâncias transientes serão destruídas pelo coletor de lixo se a aplicação não mantiver sua referência. Use uma Session do Hibernate para tornar o objeto persistente (e deixe o Hibernate gerenciar as instruções SQL que serão necessárias para executar esta transição).

    Persistent - uma instância persistente possui uma representação no banco de dados e um identificador. Ela pode ter sido salva ou carregada, portanto ela se encontra no escopo de uma Session. O Hibernate irá detectar qualquer mudança feita a um objeto persistente e sincronizar o seu estado com o banco de dados quando completar a unidade de trabalho. Desenvolvedores não executam instruções manuais de UPDATE, ou instruções de DELETE quando o objeto se tornar transiente.

    Detached – uma instância desanexada é um objeto que foi persistido, mas sua Session foi fechada. A referência ao objeto continua válida, é claro, e a instância desanexada pode ser acoplada a uma nova Session no futuro, tornando-o novamente persistente (e todas as modificações sofridas). Essa característica habilita um modelo de programação para unidades de trabalho de longa execução, que requeira um tempo de espera do usuário. Podemos chamá-las de transações da aplicação, ou seja, uma unidade de trabalho do ponto de vista do usuário.

     

    ALTERNATIVA D


  • http://img211.imageshack.us/img211/153/hibernate1.png

    Conforme mostra o diagrama de estado ao lado, temos os estados TRANSIENTE, PERSISTENT e DETACHED.

    Objetos que estão no estado TRANSIENT foram instanciados (new) e nunca estiveram associados a algum contexto persistente. Se eles forem destruídos (garbage), não poderão ser recuperados.

    Objetos que se associam a um contexto persitente, passam a ter uma identidade no banco de dados, esse é o estado PERSISTENT.

    DETACHED são objetos que estavam associados a uma sessão que foi fechada, eles então podem estar desatualizados em relação ao que foi persistido no BD. Quando essa atualização acontece ( update()/saveOrUpdate() ) eles se tornam novamente PERSISTENT.

    Objetos TRANSIENT e DETACHED podem ser coletados para a destruição.