Eu to tentando usar o busines object pra seguinte situacao: Não quero que o cliente acesse os DAOs e nem fique controlando as transações do hibernate
Pra isso eu fiz o seguinte codigo:
public class UserBO {
static Logger logger = Util.startLogger(UserBO.class);
public void saveUser(Users user){
DAOFactory daoFactory = DAOFactory.getDAOFactory(1);
UsersDAO userDAO = daoFactory.getUsersDAO();
HibernateUtility.beginTransaction();
userDAO.save(user);
HibernateUtility.commitTransaction();
logger.debug("Usuario registrado");
}
O problema disso é que terei de escrever uma chamada no BO para todas as rotinas que estao contidas no DAO.
Nao poderia para o cliente fazer isso ? ou dessa forma esta correto mesmo ?
Bom… eu que pergunto… porque meus DAOs vao instanciar os BO !
Talvez eu tenha me expressado mal… mas eu entendo que o cliente tem sim de intanciar o BO ! gotaria de saber se ele pode instanciar tanto o BO quanto o DAO !?
Vc concorda que a rotina que descrevi no BO não faz muita coisa !? talvez o cliente seja capaz de fazer isso… assim nao precisso escrever um BO para cada DAO que eu escrever… certo ?
Eu acho que o BO seria legal para fazer varias rotinas ao mesmo tempo… como instanciar dois DAOs e executar updates e inserts tudo dentro de uma transação… coisa que o DAO nao pode fazer e nao posso deixar que o cliente faça
Eu sugeriria que deixasse seu objeto de negócio somente responsável por regra de negócios, para o tratamento de persistência, crie uma camada de repositório, e seu objeto de negócio somente troca informações com ela, ao invés de saber como é a implementação da persistência.
Na verdade eu creio que não entendi o conceito de ‘BO’ aí.
Ps: Eu tinha lido algum artigo do Phillip que ele mostrava um exemplo dessa interface de respositórios, só num lembro onde.