当前位置: 首页 > 知识库问答 >
问题:

是否需要为每个实体创建一个存储库和一个服务?[副本]

张腾
2023-03-14
@Repository
public interface PhaseRepository extends JpaRepository<Phase, Serializable> {

}

和类似的服务:

@Service
public class PhaseService {
    @Autowired
    PhaseRepository repository;

    @Transactional
    public Phase create(Phase entity) {
        return repository.save(entity);
    }

    @Transactional(rollbackFor = EntityNotFound.class)
    public Phase delete(int id) throws EntityNotFound {
        Phase deleted = repository.findOne(id);
        if (deleted == null) {
            throw new EntityNotFound();
        }
        repository.delete(deleted);
        return deleted;
    }

    @Transactional(rollbackFor = EntityNotFound.class)
    public Phase update(Phase entity) throws EntityNotFound {
        Phase updated = repository.findOne(entity.getId());

        if (updated == null) {
            throw new EntityNotFound();
        }

        repository.saveAndFlush(entity);
        return updated;
    }

    public Phase findById(int id) throws EntityNotFound {
        Phase entity = repository.findOne(id);

        if (entity == null) {
            throw new EntityNotFound();
        }

        return entity;
    }
}

我用的是12个实体,大家的服务方式都一样。

谢谢!

共有1个答案

廉实
2023-03-14

也许你需要12个存储库。但也许你不需要12次服务。一个服务可以处理对多个存储库的访问。这取决于你的逻辑,以及每个实体的“重要性”有多大。

例如,如果您有实体User和Address,那么您可以有UserRepository和AddressRepository。但只有UserService,方法如addAddress(User User,Address Address)...

总而言之,我建议您根据业务逻辑组织服务,而不是一堆垃圾

 类似资料:
  • 我使用artifactory(OSS 5.1.3)作为通用的构建依赖缓存。我注意到,在存储库浏览器中,每个远程存储库都有一个附加了缓存的第二个条目。例如:“jcenter”和“jcenter缓存”。 自动创建缓存条目。在我向缓存中添加了一个通用的“gradle distributions”存储库之后https://services.gradle.org/distributions/,我发现我在树中

  • 我试图创建一个简单的网站,其中托管主题和评论。我已经从主题开始,并为它们创建了存储库: 我已经在servlet上下文中定义了存储库的路径。xml: 现在,我想在我的存储库中包含注释,但以下代码不起作用: 我的项目甚至都没建好。你能给我一个建议吗,如何为多个实体创建存储库(主题类和注释类是用@Entity声明的)? 我面对的是: TopicRepository类图标上有HDD图片 org.sprin

  • 所以我认为这里有2个场景: 每个地区(西欧除外)创建一个大型存储帐户,每个应用程序创建一个容器。存储帐户转到每个区域的资源组 1的退税: > 容器被设计为具有扁平结构(您可以创建文件夹,但这并不明显) 2的退税: 很多存储帐户 考虑到这一点,我想说为每个应用程序创建存储帐户是一个更好的选择,但也许我遗漏了一些东西。 所以问题是:在这里有其他的事情要比另一个更好的选择吗?也许是成本? 我偶然发现了一

  • 问题内容: 您是否应该在JPA中每个表有一个存储库?如果不是,您如何解决存储库数据库中的泛型? 例如,下面是一个。它处理对对象的 CRUD 操作。如果我想让存储库也保存一个对象,我将如何更改下面的界面以容纳两个对象? 问题答案: 由于存储库是从域驱动设计派生的概念,因此考虑数据库表是错误的方法。根据定义,您可以从存储库访问聚合根。实际上,存储库正在模拟这些集合。 现在是什么形成聚合根?可能更有趣:

  • 问题内容: 所以我的任务听起来很简单,但是却使我感到困惑。我已经浏览了Internet上的代码,但无法掌握。我也无法掌握老师张贴的幻灯片。这是我的要求。 创建一个新的运行时异常类型,称为EmptyStackException。 但是,我不知道如何制作方法,类,变量或满足要求所需的任何内容。我有一些类是DynamicArrayStack和LinkedStack的实现。堆栈的接口。 任何指针将大有帮助

  • 在Spring Data JPA的“入门”示例中,我们创建了一个扩展CrudRepository的接口。但是,它只处理一个实体: 在现实世界的应用程序中,有许多实体(表),我们需要对它们进行CRUD操作。使用具有多个(相关或无关)实体的Spring数据JPA存储库的正确方法是什么? 我是否必须为每个实体创建接口并逐个自动连接它们(现在听起来这是一个非常疯狂的想法)?