Templates
O Demoiselle Framework
provê abstrações de classes para as camadas de apresentação, negócio e
persistência. Tais classes podem ser encontradas no pacote
br.gov.frameworkdemoiselle.template
e auxiliam o desenvolvedor ao disponibilizar métodos comuns à maioria das
aplicações. A seguir iremos exemplificar o uso de cada uma delas.
Camada de persistência
A classe abstrata JPACrud implementa as operações básicas de inclusão,
remoção, atualização e recuperação de registros no banco de dados.
Sendo assim, possibilita que o desenvolvedor concentre-se na criação de
métodos específicos para atender as regras de negócio da sua aplicação.
Esta classe recebe dois parâmetros em notação de genéricos:
T representa a entidade que será tratada
I representa o tipo do identificador da entidade
No exemplo abaixo demonstra-se a utilização da JPACrud, onde o
desenvolvedor precisou implementar apenas um método específico.
{
public List findByAlgumCriterioEspecifico(final String criterio) {
Query query = getEntityManager().createQuery("select se from SuaEntidade se where se.criterio = :criterio ");
query.setParameter("criterio", criterio);
return query.getResultList();
}
}]]>
Camada de negócio
De forma semelhante à classe JPACrud, a classe DelegateCrud foi criada
com o intuito de dispensar o desenvolvedor de implementar métodos que
serão comuns à maioria das entidades. Além disso, esta classe
implementa a injeção de dependência entre as camadas de negócio e
persistência. Para utilizá-la, três parâmetros devem ser passados em notação de genéricos:
T representa a entidade
I representa o tipo do identificador da entidade
C representa uma classe que implemente a interface CRUD
Segue abaixo um exemplo da utilização do DelegateCrud.
Neste caso, foi implementado um método para validar a entidade antes
de proceder com a inclusão no banco de dados. Para isso, o método
insert() fornecido pela classe foi sobrescrito.
{
private void validateInsert(SuaEntidade se) {
// valida os atributos da entidade
}
@Override
@Transactional
public void insert(SuaEntidade se) {
validateInsert(se);
super.insert(se);
}
}]]>
Camada de apresentação
Para a camada de apresentação, existem duas classes que implementam os
comportamentos básicos de navegação para páginas de listagem e edição.
Estas classes são AbstractListPageBean e AbstractEditPageBean,
respectivamente. De forma semelhante à DelegateCrud, estas classes realizam a
injeção de dependência da camada de negócio dentro do artefato da
camada de apresentação. Ambas recebem dois parâmetros em notação de genéricos:
T representa a entidade que será tratada
I representa o tipo do identificador da entidade
Estendendo o AbstractListPageBean:
{
}]]>
Estendendo o AbstractEditPageBean:
{
}]]>