我有一个 Spring MVC 应用程序,它工作正常,但现在我插入了服务模式,我不知道在我的 DAO 中处理我的 JDBC 连接的最佳方法是什么。
我有一个拦截器,它创建这样的连接:
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle: Abrindo Conexao BD");
conn = new ConnectionFactory().getConnection();
request.setAttribute("conn", conn);
return true;
}
所以,在这之后,我在我的控制器(servlet)中得到了这样的连接:
@RequestMapping("efetuaLogin")
public String efetuaLogin(Usuario usuario, HttpSession session, HttpServletRequest request) throws ServletException {
Connection conn = (Connection) request.getAttribute("conn");
if(new UsuarioDAO(conn).existeUsuario(usuario)){
session.setAttribute("usuarioLogado", usuario);
return "adm/main-adm";
}
return "redirect:loginForm";
}
非常简单,我将连接传递给 DAO,一切正常。但现在我有了图层服务。
之前:控制器 > DAO
现在:控制器 > 服务 > DAO
我不想将我的connection(conn) 作为参数传递给Service,并在Service 之后将conn 作为参数传递给DAO。这似乎不是一个好方法。
我想,也许是为了在我的 DAO 中获取连接工厂,但我不确定,拦截器似乎仍然是管理它的更好方法。
那么,你会怎么做呢?对不起,如果这是一个愚蠢的问题,但我不想在这一刻编造任何东西,只是为了跟随人们正在做的事情来创造一个好的样板......
- 我不打算在这个项目中使用 Hibernate。