如何在每个模型的不同DAL类中实现JPA存储库方法时避免重复的代码行/块



假设我有两个模型,对于每个模型,我都有一个JPA存储库接口,如下所示:

public interface IPersonJPARepository extends JpaRepository<Person, Long> {
.....
}
public interface ICountryJPARepository extends JpaRepository<Country, Long> {
.....
}

然后我想为每个模型都有一个DAL类,在那里我可以使用ORM方法进行CRUD。例子:

@Repository
public class PersonDal implements IPersonDal {
@Autowired
IPersonRepository repo;
@Override
public List<Person> getAll() {
return repo.findAll();
}
}
@Repository
public class CountryDal implements ICountryDal {
@Autowired
ICountryRepository repo;
@Override
public List<Country> getAll() {
return repo.findAll();
}
}

然后问题发生在启动Sonarqube来分析我的代码时,因为Sonarqube看到在两个getAll()方法中,我使用同一行来获取特定模型的所有对象。我的问题是索纳库贝问题的解决方案是什么?

遵循变量命名约定。变量名可以是有代表性的名词,而不是一般的词。在您的情况下,更改如下:

@Autowired
ICountryRepository countryRepository; // or countryRepo

@Autowired
IPersonRepository personRepository; // or personRepo

如果你真的有一个重复的代码,把它复制到一个接口或超类中,并使用继承来扩展/实现父类。

相关内容

  • 没有找到相关文章

最新更新