【发布时间】:2015-08-23 11:44:38
【问题描述】:
我正在使用 Hibernate+Spring 和一个数据库来保存我的实体。我已经在使用JpaRepository 创建我的存储库,但即便如此,我似乎必须为每个实体创建一个扩展 JpaRepository 的接口。最糟糕的是,我正在为每个实体创建一项服务。他们都非常相似。
有什么方法可以创建通用服务和通用存储库?真的有必要逐一实现吗?
目前,我有这样的存储库:
@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 个实体,每个人都有相同的服务方法。
谢谢!
【问题讨论】: