CRUD
O CRUD (acrônimo de Create, Read, Update e Delete na língua Inglesa) é a camada lógica do sistema. Nela está toda a definição do que o sistema se propõe a fazer.
O CRUD é orientado a serviço, isto é, cada método tem a sua função clara e específica, recebe os dados de entrada e tenta cumprir sua função. Em caso de sucesso retorna o esperado, em caso de falha lança uma exceção. Não mantém estados (stateless). Em outras palavras, todos os seus métodos são estáticos e devem lançar apenas exceções do próprio framework: BISException. Qualquer outra exceção deve ser tratada e substituída por uma do BISCore como manda o Uso das Exceções.
É recomendável que seja feita uma classe de CRUD para cada elemento do módulo. Isso porque cada classe de CRUD tende a ser extensa por ter os métodos de lógica, e muito código em uma classe torna-se confuso e de difícil manutenção. Além disso, é recomendável que métodos de validação e pré-processo muito longos sejam separados em outras classes, facilitando o a localização do código.
CRUD Modelo
O modelo abaixo é uma classe genérica que implementa todos os métodos fornecidos pela persistência. Os de 'find' já ficam prontos, enquanto que os de insert, update e delete precisam ser melhor observados ganham apenas o 'TODO' em seu corpo. Para usa-lo faça as seguintes substituições com a ferramenta 'replace all':
- <beanname> - Substitua esta tag pelo nome do bean a ser persistido. Ex: 'Balance' para o 'BalanceVO', 'ItemCode' para o 'ItemCodeVO'.
- <modulename> - Substitua esta tag pelo nome do módulo. Ex: 'Fiscal', 'Item', 'ECF', etc.
![]() |
Exemplo de Código de uma Classe do CRUD
import java.util.Collection;
import java.util.List;
import br.com.biserp.bis.core.mo.BISOrderBy;
import br.com.biserp.bis.exceptions.BISException;
public class <beanname>Crud {
public static <beanname>VO insert<beanname>(<beanname>VO vo) throws BISException {
<beanname>Validation.insert<beanname>(vo);
<beanname>DAO dao = <modulename>DAOFactory.get<beanname>DAO();
vo = dao.insert(vo);
return vo;
}
public static <beanname>VO update<beanname>(<beanname>VO vo) throws BISException {
<beanname>Validation.update<beanname>(vo);
<beanname>DAO dao = <modulename>DAOFactory.get<beanname>DAO();
dao.update(vo);
}
public static void delete<beanname>(Long id) throws BISException {
<beanname>Validation.delete<beanname>(id);
<beanname>DAO dao = <modulename>DAOFactory.get<beanname>DAO();
dao.delete(id);
}
public static void delete<beanname>(Collection<Long> ids) throws BISException {
if (ids != null) {
for (Long id : ids) {
delete<beanname>(id);
}
}
}
public static Long count<beanname>(<beanname>MO mo) throws BISException {
<beanname>DAO dao = <modulename>DAOFactory.get<beanname>DAO();
return dao.count(mo);
}
public static List<Long> find<beanname>IDs(<beanname>MO mo, BISOrderBy orderby) throws BISException {
<beanname>DAO dao = <modulename>DAOFactory.get<beanname>DAO();
return dao.findIDs(mo, orderby);
}
public static <beanname>VO find<beanname>(Long id, String[] attributes) throws BISException {
<beanname>DAO dao = <modulename>DAOFactory.get<beanname>DAO();
return dao.findById(id, attributes);
}
public static List<<beanname>VO> find<beanname>List(<beanname>MO mo, BISOrderBy orderby, String[] attributes) throws BISException {
<beanname>DAO dao = <modulename>DAOFactory.get<beanname>DAO();
return dao.findList(mo, orderby, attributes);
}
public static <beanname>VO find<beanname>UniqueMatch(<beanname>MO mo, String[] attributes) throws BISException {
<beanname>DAO dao = <modulename>DAOFactory.get<beanname>DAO();
return dao.findUniqueMatch(mo, attributes);
}
}
|