对于这个问题,我不是在寻找解决方案,而是在寻找一个可以让自己前进的方向,因此不共享任何代码。
我正在准备一个 REST API,我在本地设置了 postgresql 数据库,它有 2 个表和来自这 2 个表的一个 View 。
通常当我想从数据库中获取任何数据时,我会使用以下代码(为了清楚起见):
DataRepository 类:
public interface DataRepository extends CrudRepository<Data, String>{}
数据服务类:
@Service
public class DataService {
@Autowired
private DataRepository repo;
public Data getData(String id){
return repo.findById(id).orElse(null);
}
}
数据 Controller 类:
@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
}
现在我想从 View 中检索数据,那么应该采用什么方法呢?
我们应该使用相同的方法来创建模型、服务、Ctonroller 和存储库类吗?
我们可以使用 CrudRepository 来实现同样的目的吗?
我搜索了很多地方,但没有找到任何有用的东西。
如果有人对此有任何线索,请告诉我。
最佳答案
CrudRepository
的读取方法应该可以很好地处理 View 。对于写法,view需要是可更新的enter link description here .
如果你只想读取,而不是写入存储库,你可以通过复制 CrudRepository
的源代码并删除所有写入来创建一个 ReadOnlyRepository
方法。
请注意,JPA 仍将尝试保留对托管实体所做的更改。 为避免这种情况并避免脏检查的成本,您可以 mark your entities as immutable如果您使用的是 Hibernate。
关于java - 使用 CrudRepository 从 View 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54652224/