问题描述
对于这个问题,我不是在寻找一个解决方案,而是寻找一个方向,我可以从哪里开始,因此不共享任何代码。
我正在准备一个REST API,我在本地有postgresql数据库设置,它有2个表和这两个表中的一个视图。
通常,当我想从DB获取任何数据时,我使用以下代码(为了清楚起见):
DataRepository类:
public interface DataRepository extends CrudRepository<Data, String>{}
DataService类:
@Service
public class DataService {
@Autowired
private DataRepository repo;
public Data getData(String id){
return repo.findById(id).orElse(null);
}
}
DataController类:
@RestController
public class DataController{
@Autowired
private DataService service;
@RequestMapping("/{id}")
public Data getData(String id){
return service.getData(id);
}
}
数据类:
@Entity
public class Data{
@Id
private String id;
private String name;
//respective getter and setter methods
}
现在我想从视图中检索数据,那么,应该采用什么方法呢?
我们应该使用相同的方法来创建Model,Service,Ctonroller和Repository类吗?
我们可以使用CrudRepository来实现同样的目标吗?
我在很多地方搜索过,但没有找到任何有用的东西。
如果有人对此有任何线索,请告诉我。
1楼
CrudRepository
的读取方法应该可以正常工作。
对于编写方法,视图需要可更新,请 。
如果您只想读取而不是写入存储库,则可以通过复制CrudRepository
的源代码并删除所有编写方法来创建ReadOnlyRepository
。
请注意,JPA仍会尝试保留对托管实体所做的更改。 为了避免这种情况并且还要避免脏检查的成本,如果使用Hibernate,可以 。