我正在开发课程总结工作(最终毕业作品)。我们仅将Java与Spring MVC和Glassfish Application Server一起使用。我们将不使用Hibernate或JPA,因为我们将在MS SQL Server 2008中使用存储过程,因此JDBC似乎是调用它们的最有效方法(据我所知,我不能像SQL Server的参数)。我们已经在Glassfish上配置了数据源池。我们知道我们需要DAO才能从SQL Server调用过程。我的问题是:
1-)我是否需要(或者最好是使用)Service对象(正确标注为@Service)来调用DAO方法?或者我可以直接从控制器调用DAO方法?
2-)从数据源获取连接的最佳方法是什么?每个DAO上都有一个带有getConnection方法或ds.getConnection()的单独类?
谢谢
我倾向于拥有服务层的最大原因是以下两个原因…
将方法标记为@Transactional,以便此方法内的所有DAO请求都在单个事务中发生。
我可以将关注点与DAO和用户角色分开。我可以将方法标记为需要某些用户角色,因此在Spring Security中可以很好地使用。
您可以只从控制器调用DAO,但是如果以后要扩展,它将使您陷入困境。为了获得连接,您可以使用将服务标记为@Transactional,将DAO标记为@ Repository,Spring将为您处理整个会话对象并进行注入等操作。
我倾向于认为(可能是错误地)将服务层视为可访问的外观,无论是从Web服务还是从控制器或其他任何东西,它都保持分隔。