Estou com uma duvida, seguindo apostilas e forum e percebi que não estou utilizando o DaoFactory para controle de transação e esta funcionando normalmente no vraptor 3, mas na teoria eu ñ deveria ter um interceptador?
Acho q com as classes fica melhor pra entender…
@Resource
public class UsuarioController {
private final UsuarioDao dao;
private final Result result;
public UsuarioController(UsuarioDao dao, Result result) {
this.dao = dao;
this.result = result;
}
public void adiciona (Usuario usuario) {
this.dao.adiciona(usuario);
result.use(logic()).redirectTo(UsuarioController.class).lista();
}
//@Path("/lista")
public void lista () {
List<Usuario> usuarioList = this.dao.listaTudo();
result.include("users", usuarioList);
}
public void formulario() {
}
}
@Component
public class UsuarioDao extends Dao {
public UsuarioDao(Session session) {
super(session, Usuario.class);
}
}
Não devira ter um classe assim??
@RequestScoped
@Intercepts
public class DaoInterceptor implements Interceptor {
private final DaoFactory factory;
public DaoInterceptor (DaoFactory factory){
this.factory = factory;
}
public void intercept(InterceptorStack stack, ResourceMethod method,
Object instance) throws InterceptionException {
try {
factory.beginTransaction();
stack.next(method, instance);
factory.commit();
}finally {
if (factory.hasTransaction()) {
factory.rollback();
}
factory.close();
}
}
public boolean accepts(ResourceMethod method) {
return true;
}
}
e como implementar ela no Controller?
Obrigado