Title: Hibernate
O Hibernate � um framework de persistencia e entao deve encapsularse na camada de persistencia, o seja detras das interfaces com a camada de negocios, vc deve separar os conceitos, ter tuas classes persistentes (bem planas para poder ser reutilizaveis, ej: JavaBeans que estam disponiveis otogonalmente, o seja em todas as camadas da app) e ter clases implementando interfaces se encarregem de fazer a persistencia dessas classes, ja a implementacao desas interfaces vc define. Um objeto SessionFactory � pessado de criar, entao � melhor ter somente uma instancia dele no contexto da app e usar sempre desde as classes que implementan a persistencia: Ex:
 
// JavaBean que representa a tabela
public class ClasseP extends... implements...
{
    // atributos(colunas da tabela) com seus get/set
    ....
}
 
public interface PersistenciaDeClasseP extends...
{
    // metodos de persistencia
    ...
    public ClasseP consultarClasseP(ClassePPK pk) throws SuasExcecoesDePersistencia;
    public void inserirClasseP(ClasseP cp) throws SuasExcecoesDePersistencia;
    ...
}
 
// classe que inicializa a configuracao do Hibernate, pode implementar o design pattern Facade
public class ContextoDaApp extends...implements...
{
    ...
    static
    {
        // inicializacao do hibernate...
    }    ...
    public static SessionFactory obterFabricaDeSecao()
    {
        // sentencias para obter o SessionFactory
        ....
    }
}
 
// classe que implementa a interface PersistenciaDeClasseP
public class PersistenciaBDRDaClasseP extends... implements PersistenciaDeClasseP, ...
{
    ....
    public void inserirClasseP(ClasseP cp) throws SuasExcecoesDePersistencia
    {
        ...
        Session secao = ContextoDaApp.obterFabricaDeSecao().openSession();
        ...
        secao.save(ca); 
        ...
    }
}
 
Qualquer coisa tou aqui!.
 
Sds
 
jars
 
Disculpe as faltas, nao sou brasileiro...
----- Original Message -----
Sent: Monday, June 23, 2003 4:37 PM
Subject: [enterprise-list] Hibernate

Ol� a todos,

Estou iniciando o uso do Hibernate e tenho uma d�vida sobre a distribui��o, em camadas, dos objetos que controlar�o a persist�ncia dos dados. Pe�o desculpas pelo e-mail longo, mas gostaria de deixar claro qual � a d�vida...

Tenho de criar um Datastore que armazenar� informa��es mapeadas das classes. Devo criar ainda um SessionFactory que "fabricar�" sess�es para acesso aos dados. Depois eu uso os m�todos dos objetos-sess�o para inserir, alterar e excluir informa��es... Fa�o mais ou menos assim:

Datastore ds = Hibernate.createDatastore();
ds.storeClass(MinhaClasse1.class);
sessionFactory = ds.buildSessionFactory();

Session session = sessionFactory.openSession();

session.save(objeto_da_minha_classe_1);
session.flush();
session.connection().commit();
session.close();

D�vidas:

Supondo que quero persistir v�rias classes, devo armazenar as classes correlatas no mesmo Datastore?
Devo armazenar todas as classes no mesmo Datastore (n�o apenas as correlatas)?
Devo criar meu Datastore em uma camada, meu SessionFactory em outra e os comandos de atualiza��o da em uma terceira camada?

Algu�m tem algum exemplo, com divis�o dos objetos do Hibernate em camadas, que possa ceder para estudo?
Algu�m sabe um link que indique uma boa divis�o das camadas para esse caso?
Em que situa��es devo compartilhar do mesmo SessionFactory e do mesmo Datastore?

V�ctor Moreira de Gurj�o

Ps.: Sei que est� meio confuso, mas n�o consegui me expressar melhor. Agrade�o respostas a qualquer das perguntas. Obrigado!

Responder a