猿问

我可以在服务中使用 SQL 查询吗

执行 SQL 查询的推荐方法是使用@Repository注释创建存储库。我想知道我是否也可以使用@Service注释在服务中执行 SQL 查询,或者这是否与特定的 Spring 原型相关联?

例如:是否有任何规则保证一个@Service类必须具有业务逻辑并且@Repository必须具有查询执行?如果我在一个类中执行一个查询,@Service它会抛出任何异常吗?


手掌心
浏览 74回答 4
4回答

繁星coding

不,它不会抛出任何异常。但是分离数据库逻辑和业务逻辑的想法是将@Service 用于服务实现(业务逻辑)和@Repository 用于存储库,即处理数据库操作(它可以是CRUD、PagingAndSorting 等)。因此,代码变得模块化并遵循设计模式和编码标准。服务将使用存储库。您的处理程序将使用您的服务中的方法。这就是它的工作原理。

慕森卡

根据Spring API 规范。当与 PersistenceExceptionTranslationPostProcessor 结合使用时,使用@Repository 注释的类符合 Spring DataAccessException 转换的条件。注释类也被阐明了它在整个应用程序架构中的作用,用于工具、方面等。因此 DataAccessException 旨在用户代码在不知道正在使用的特定数据访问 API(例如 JDBC)的详细信息的情况下查找并处理遇到的错误类型。@Service 没有任何 DataAccessException 翻译,因此您可以在使用 @Service 注释注释的类上预期未翻译的异常。它表明一个类是一个业务服务门面。

繁星点点滴滴

@Service ,@Repository,@Controller都是专门化@Component的都称为Spring Beans @Component  generic stereotype for any Spring-managed component  @Repository stereotype for persistence layer                     @Service    stereotype for service layer                         @Controller stereotype for presentation layer (spring-mvc) 这一切都是为了分发关注点(演示、业务、数据库),所以它不会像您要求的那样出现任何异常。您可以在此处参考更多信息- Spring Docs

江户川乱折腾

当我们要开发任何项目时,它应该是lossy coupled and maintainable. 实现这一层分离很重要@Service- 使用@Service 注释所有服务类。该层知道工作单元。您所有的业务逻辑都将在服务类中。通常,服务层的方法都包含在事务之下。您可以从服务方法进行多个 DAO 调用。如果一个事务失败,所有事务都应该回滚。@Repository- 使用 @Repository 注释所有 DAO 类。您所有的数据库访问逻辑都应该在 DAO 类中。@Component- 使用组件构造型注释您的其他组件(例如 REST 资源类)。使用它们的原因:使用@Repository 或@Service 而不是@Component 的主要优点是很容易编写一个AOP 切入点,例如,所有使用@Repository 注释的类。您不必在上下文 xml 文件中编写 bean 定义。而是注释类并通过自动装配来使用它们。专门的注释有助于清楚地划分应用层(在标准的 3 层应用中)。什么是刻板印象 参考这里@Component 任何 Spring 管理组件的通用原型@Repository 原型用于持久层@Service 原型用于服务层@Controller 原型用于表示层(spring-mvc)有关更多详细信息,请单击此处和此处
随时随地看视频慕课网APP

相关分类

Java
我要回答