Tem algum artigo sobre louds?
]['s
Tem algum artigo sobre louds?
]['s
fabgp2001, que tal o blog dele, de onde li sobre isso?
E o que fazer com a coleção heterogênea de objetos? Se eles não implementarem ao menos uma interface em comum, o máximo de informação que podem dar é um toString()? Tem alguma mágica de reflexão?
QUANTO A TRANSAÇÕES… sei que é uma discução um tanto quanto antiga, mas achei o assunto legal e gostaria de compartilhar uma solução…
public ActionForward gravar(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
DynaActionForm atividadeForm = (DynaActionForm)form;
Atividade atividade = null;
SystemUserSession systemUserSession = new SystemUserSession(request);
BusinessTransaction businessTransaction = getBusinessTransactionFactory().createNewBusinessTransaction((SystemUser)systemUserSession.getModel());
try {
businessTransaction.start();
AtividadeBusiness atividadeBusiness = new AtividadeBusiness(businessTransaction);
atividade = (Atividade)atividadeBusiness.newEntityInstance(
((Long)atividadeForm.get("idAtividade")).longValue()
);
BeanUtils.copyProperties(atividade, atividadeForm);
try {
businessTransaction.beginTransactionalBlock();
atividadeBusiness.save(atividade);
businessTransaction.commitTransactionalBlock();
} catch (BusinessTransactionException bte) {
businessTransaction.rollbackTransactionalBlock();
setAlertMessage(request, be.getMessage());
}
} finally {
businessTransaction.finish();
}
atividadeForm.initialize(mapping);
return mapping.findForward("_FormAtividade");
}
Nessa solução que implementei na arquitetura que desenvolvi para fabrica de software que trabalho, criei uma classe responsavel por controlar o escopo (start/finish) e as ações (begin/commit/rollback) das trasações de negócio do sistema.
O fluxo é o seguinte…
Obviamente que existem outras classes e interfaces envolvidas na parada, mas o conceito é esse.
Da maneira como estruturei essa arquitetura, fica bastante fácil se amanhã ou depois eu não quiser mais utilizar o Hibernate e passar a usar um outro mecanismo de persistencia, porque toda a estrutura está baseada em interfaces.
Bom espero que ajude… espliquei bem por cima, como disse, tem várias classes e interfaces envolvidas, mas acho que deu para enternder o conceito, né?
Sei que ainda tem várias coisas para serem melhoradas e estou trabalhando todos os dias para fazer isso… …sugestões são bem vindas…
Abraço!
[quote=AllMighty]E o que fazer com a coleção heterogênea de objetos? Se eles não implementarem ao menos uma interface em comum, o máximo de informação que podem dar é um toString()? Tem alguma mágica de reflexão?
[/quote]
No meu caso eu tinha 1 factory de helpers que providenciavam a view e outras colaborações.
qual o jeito certo d fazer DAOs :? ?
[quote=cv]O ActiveRecord (do Ruby On Rails, nao o Pattern) faz algo mais ou menos assim (traduzindo pra Java, e eu nao sei se acertei na sintaxe um-ponto-cincozenta):
[code]
public class Base {
public static T find(int id) { … }
public static Collection find_by_example(T example) { … }
public static Collection find_by_…
public T save() { … }
}[/code]
[/quote]
Em java num da pra usar generics em metodos Static!
Eu também já fiquei um pouco confuso com a questão dos objetos getters e setters. O que mais vejo são os programadores colocando os atributos como private e depois criando métodos set e get. A idéia do encapsulamento não seria esconder dos outros objetos, a forma como foi escolhida para representar um dado.
Por exemplo, se eu tenho uma classe chamada Turma que usa um ArrayList ou uma Hashtable para guardar os alunos:
private ArrayList alunos;
e criar um método getAlunos que retorna esse ArrayList, não seria a mesma coisa que deixar o atributo alunos como público?