Shiva – Um framework para mapeamento objeto-diretório
Shiva – Um framework para mapeamento objeto-diretório
O projeto
O objetivo do projeto foi desenvolver um framework Open Source em Java capaz de mapear classes POJO para diretórios LDAP, provendo desta forma funcionalidades de persistência e validação dos objetos destas classes. Algo semelhante ao Hibernate (dadas as devidas proporções), porém, tendo como backend um serviço de diretórios (OpenLdap, Active Directory).
As principais features
• Mapeamento objeto-diretório: assim como o mapeamento objeto relacional temos um mapeamento relacionando as classes a diretórios e atributos da classe Java com atributos do diretório;
exemplo de mapeamento objeto-diretório
• Validação dos objetos a serem persistidos: existem anotações de validação de atributos com o objetivo de deixar a base padronizada.
- @Cnpj (String)
- @Cpf (String)
- @Email (String)
- @Pattern (String) expressões regulares
- @Range (Integer) min + max
- @Min (Integer) valor minimo
- @Max (Integer) valor máximo
- @NotEmpty (String) diferente de nulo e vazio (“”)
- @Length (String) quantidade minima e máxima de caracteres
exemplo de validação de atributo
• Persistência e recuperação de objetos de forma transparente.
Modelo arquitetural do projeto Shiva
Conjunto de elementos significativos em termos de arquitetura
Configuração (como utilizar o Shiva no meu projeto?)
• Baixar o binário do Projeto Shiva;
• Adicionar o “shiva_1.0.jar”, “message.properties” e o “shiva.properties” ao classpath;
• Configurar o “shiva.properties”;
exemplo de configuração do "shiva.properties"
• Configurar o “message.properties”;
exemplo de configuração do "message.properties"
• Realizar o mapeamento objeto-diretório nas classes de entidade;
• Registrar as classes de entidade previamente mapeadas;
• Chamar o método “configure()” da classe “shiva.cfg.Configuration”.
Exemplo de mapeamento
exemplo de mapeamento de classe de domínio
Exemplo de utilização
exemplo de listagem de e-mail de todos os funcionários
Trabalhos Futuros
• Criar uma interface para as aplicações clientes conseguirem parametrizar os valores dos parâmetros de conexão. Ex: cache_statements (habilita o cache de queries), secure(habilita conexões TLS/SSL) etc;
• Trabalhar o conceito de Attached / Detached dos objetos das classes de entidade;
• Registrar as anotações e classes de validação do usuário;
• Criar métodos de pesquisa flexíveis de consulta de entradas no serviço de diretórios.
Disponibilização
• Site do projeto: http://project-shiva.googlecode.com
• Download em formato binário: http://project-shiva.googlecode.com/files/shiva_1.0.jar
• Download do código fonte, via subversion: http://project-shiva.googlecode.com/svn/trunk