参见英文答案 > 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来组织服务
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。