DHibernate – Features Explained Parte I   Recently updated !


Este é o primeiro artigo sobre as features do DHibernate.

Vou publicar uma série de artigos contendo explicações sobre a implementação do framework de persistência.

A publicação neste blog é para manter a referência do DHibernate em português, depois ele será traduzido para inglês e enviado para a revisão, e só então publicado no wiki do projeto.

IConfiguration

É a primeira classe a ser instanciada e contêm as configurações que identificam o Driver e Dialeto do banco de dados, classes de Cache e Transação e outras configurações que alteram o comportamento do framework.

Além de armazenar todos estes parâmetros esta classe validará as informações:

  • Arquivos externos de configuração.
  • Se os parâmetros de conexão do banco de dados estão corretos.
  • Carregar e validar os metadados de mapeamento das classes.
  • Carregar e validar as instruções sql pré-definidas como NamedSql.

Após toda a configuração estar carregada e validada é possível obter uma instancia de ISessionFactory, contendo todas estas configurações prontas para serem usadas, não sendo necessário efetuar nenhuma carga ou validação.

Deve ser criada uma IConfiguration para cada banco de dados ou para cada Schema, pois tudo será validado antes de se obter uma ISessionFactory.

ISessionFactory

É pesada, deve ser criada somente uma vez e compartilhada por todas as threads, então a implementação deve ser threadsafe.

Normalmente existe apenas uma instancia para toda a aplicação. Se for necessário conectar a mais de um banco de dados, deve ser criado uma instancia de ISessionFactory para cada conexão.

A única configuração carregada diretamente é  INameStrategy, que deve ser feita antes de se criar uma ISession, pois ela define as regras de como o framework vai gerar  nome de Tabelas, Colunas , Índices, Chaves Primárias e Estrangeiras.

ISessionFactory faz cache de intruções SQL geradas e metadados do mapeamento utilizados em tempo de execução.

Além de criar novas instancias de ISession, é responsável por guardar a referencia das ISession sendo utilizada através da propriedade CurrentSession.

ISession

É leve e pode ser criada sempre que necessário. Principal Interface, pois encapsula o Database Provider e todos os objetos necessários para a comunicação direta com o banco de dados. Também responsável pela criação de Transações.

Expõe métodos para localizar, salvar, atualizar e excluir objetos, também conhecida como Persistence Manager.

Após uma conexão ser estabelecida, é criado um cache de acordo com os parâmetros definidos em IConfiguration. Este cachê armazenara a referencia de todos os objetos persistentes, criados pelo usuário e salvos, ou recuperados do banco de dados. Pode ser considerada como uma coleção de objetos persistentes relacionados a uma única unidade de trabalho. Ver o Design Pattern Unit of Work.

Próximo Artigo:

  • ITransaction
  • IQuery
  • ICriteria