Tob*_*obi 5 java spring jpa spring-data
我有几个实体,并使用Spring Data JPA存储库和规范查询我的数据库。因此,我创建了一个通用类SpecBuilder来根据查询描述 ( MyQueryDescriptor)构建我的查询。
public class Specs {
public static <T extends MyEntityIFace> Specification<T> myfind(final MyQueryDescriptor qDesc) {
return new Specification<T>() {
@Override
public Predicate toPredicate(Root<T> root,
CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
try {
return SpecBuilder.mySpec(root, criteriaQuery, criteriaBuilder, qDesc);
} catch (Exception e) {
...handle error...
}
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
我的存储库:
public interface Entity1DAO extends Repository<Entity1,Long>,
JpaSpecificationExecutor {
}
Run Code Online (Sandbox Code Playgroud)
和
public interface Entity2DAO extends Repository<Entity2,Long>,
JpaSpecificationExecutor {
}
Run Code Online (Sandbox Code Playgroud)
现在有 3 件事我不太确定:
1)
使用通用 SpecBuilder 是一个干净的设计吗?
2)
有没有办法避免为每个实体编写这些存储库接口?让我们说一个通用的存储库?
3)
所述的MyQueryDescriptor类必须返回一个实体,这将被查询的实例的方法。
什么是基于实体类获取相应存储库的干净方法,避免切换案例?我正在考虑为每个实体添加一个带有特定存储库类的注释,但感觉有点臭。
我应该创建一个工厂并注入一个像
Entity1.class => Entity1DAO
Entity2.class => Entity2DAO
Run Code Online (Sandbox Code Playgroud)
?
| 归档时间: |
|
| 查看次数: |
12546 次 |
| 最近记录: |