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: { }]]>