加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – 是否有必要为每个实体创建存储库和服务?

发布时间:2020-12-15 01:23:41 所属栏目:大数据 来源:网络整理
导读:参见英文答案 Are you supposed to have one repository per table in JPA?????????????????????????????????????1个 我正在使用Hibernate Spring和一个数据库来保存我的实体.我已经在使用JpaRepository来创建我的存储库,但即使这样,我似乎必须为每个实体创

参见英文答案 > Are you supposed to have one repository per table in JPA?????????????????????????????????????1个
我正在使用Hibernate Spring和一个数据库来保存我的实体.我已经在使用JpaRepository来创建我的存储库,但即使这样,我似乎必须为每个实体创建一个扩展JpaRepository的接口.最糟糕的是,我正在为每个实体创建一个服务.他们都非常相似.

有什么方法可以创建通用服务和通用存储库?是否真的有必要实施它们中的每一个?

到目前为止,我有这样的存储库:

@Repository
public interface PhaseRepository extends JpaRepository

和这样的服务:

@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个实体,每个人都有相同的服务方法.

谢谢!

最佳答案
可能你需要12个存储库.但也许你不需要12项服务.服务可以处理对多个存储库的访问.这取决于你的逻辑以及每个实体的“重要性”.

例如,如果您有实体User和Address,则可以使用UserRepository和AddressRepository.但只有UserService,有addAddress(用户用户,地址)等方法……

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读