如果我有包含保存、删除和修改操作的 Spring 数据存储库。我应该在服务层创建以下方法操作吗?并添加注释@Transactional?还是让它们保持原样?或者我应该将它们放在存储库层中?
示例服务
@Service
public class RepositoryOperations{
@Autowired
ProductRepository productRepository;
@Transactional
public void saveProduct(){
productRepository.save();
}
...
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我认为您对代码使用了一种很好的方法。您可以创建一个将调用产品存储库方法的服务层,以分离职责(业务与数据逻辑)。
三层架构将您的方法描述如下:
为了防止出现问题时您的 saveProduct() 服务方法出现任何不一致,您可以使用 @Transactional 批注来回滚您的方法在数据库中所做的所有更改,因此我认为使用该批注是一种很好的做法当您在数据库中进行写入操作时。
我们一般保留三层。
使用注释来注释您的 dao 层 使用@Repository
注释来注释您的服务层@Service
使用注释或 @RestController 来注释您的控制器@Controller(如果您有 REST API)
@Transactional当您希望代码在失败时回滚时,可以使用注释。如果您的服务为三个不同的操作发出三个 dao 调用,并且您希望执行这三个操作的全部或全部都不执行,请使用@Transactional
Same apply for dao 方法注释您的服务方法。
所以你现在有相当多的信息可以做出决定。
| 归档时间: |
|
| 查看次数: |
1293 次 |
| 最近记录: |