gpt4 book ai didi

java - 如果只是为了搜索,是否值得将实体放在 @Transactional 服务层下?

转载 作者:行者123 更新时间:2023-12-02 07:03:39 24 4
gpt4 key购买 nike

在 Spring MVC 中,我将大多数 JPA entity (来自域层)操作放在 service 层下,对于大多数 CRUD 操作,我有使该服务方法或类@Transactional

但是,只是想,如果对于常规查找方法,就像

MyEntity myEntity = MyEntity.findByAliceAndBob(Alice alice, Bob bob);

所以问题是:

  1. 我们需要将其放在 @Transactional 方法下吗?
  2. 如果没有必要但我们仍然这样做,是否会产生性能成本?
  3. 如果没有必要,为什么不直接将 finder 方法调用到 Controller 中呢?

最佳答案

简单答案:

do we need to put it under a @Transactional method?

没有。

If not necessary and but still we do so, is there any performance cost?

是的,您正在打开一个事务,并在不需要时关闭它(请注意,对数据库的影响取决于 RDBMS 供应商)。

If not necessary, so why not just call the finder method into controller?

你可以这样做,但在我看来你不应该这样做,因为你可能会破坏分层结构。针对数据源(在本例中为数据库)的操作必须在 DAO 层中完成,而不是在 Service 层中完成。

关于java - 如果只是为了搜索,是否值得将实体放在 @Transactional 服务层下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16344266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com