Spring:DAO

时间:2017-02-19 23:17:50

标签: java spring annotations spring-data-jpa

我正在使用Spring 4.X编写RESTFul应用程序。

在调用远程Web服务的DAO中,我添加了@Service注释。 但是,在我最近的研究中,我发现@Repository注释according to Spring适用于DAO:

  

团队实施传统的J2EE模式,例如"数据访问   对象"也可以将这种刻板印象应用于DAO类   应该了解数据访问之间的区别   在执行此操作之前,对象和DDD样式的存储库。这个注释是   一般的刻板印象和个别团队可能会缩小他们的范围   语义和适当的使用。

我的问题是:

Spring文档是指持久数据的DAO还是可以调用远程服务的DAO?在我的情况下,哪个是最合适的注释?

此致

2 个答案:

答案 0 :(得分:1)

你也可以使用像@Component这样的任何刻板印象。根据我的知识,这些刻板印象主要是因为他们如何抛出异常'。你可以通过不同的刻板印象抛出谷歌异常。这就是为什么我们在DAO层使用@Repository,在服务层使用@Service等,以便我们可以轻松处理异常。

此链接将为您提供更多信息。 http://javapapers.com/spring/spring-component-service-repository-controller-difference/

,Spring文档指的是持久化数据的DAO。在您的情况下,它取决于您调用的服务类型以及您希望如何处理异常。我建议按照上面建议的链接。

答案 1 :(得分:0)

参考 - Spring documentation

  

Spring提供了进一步的构造型注释:@ Component,@ Service和@Controller。 @Component是任何Spring管理组件的通用构造型。 @Repository,@ Service和@Controller是@Component的特殊化,用于更具体的用例,例如,分别在持久性,服务和表示层中。因此,您可以使用@Component注释组件类,但是通过使用@ Repository,@ Service或@Controller注释它们,您的类更适合通过工具处理或与方面关联。例如,这些刻板印象注释成为切入点的理想目标。在以后的Spring Framework版本中,@ Repository,@ Service和@Controller也可能带有额外的语义。因此,如果您选择在服务层使用@Component或@Service,@ Service显然是更好的选择。同样,如上所述,已经支持@Repository作为持久层中自动异常转换的标记。

@Repository - 这是为了表明该类定义了一个数据存储库。