一尘不染

我需要服务对象吗?

spring-mvc

我正在开发课程总结工作(最终毕业作品)。我们仅将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()的单独类?

谢谢


阅读 332

收藏
2020-06-01

共1个答案

一尘不染

我倾向于拥有服务层的最大原因是以下两个原因…

  1. 将方法标记为@Transactional,以便此方法内的所有DAO请求都在单个事务中发生。

  2. 我可以将关注点与DAO和用户角色分开。我可以将方法标记为需要某些用户角色,因此在Spring Security中可以很好地使用。

您可以只从控制器调用DAO,但是如果以后要扩展,它将使您陷入困境。为了获得连接,您可以使用将服务标记为@Transactional,将DAO标记为@
Repository,Spring将为您处理整个会话对象并进行注入等操作。

我倾向于认为(可能是错误地)将服务层视为可访问的外观,无论是从Web服务还是从控制器或其他任何东西,它都保持分隔。

2020-06-01