java - 使用 CrudRepository 从 View 获取数据

标签 java rest spring-boot spring-mvc spring-data-jpa

对于这个问题,我不是在寻找解决方案,而是在寻找一个可以让自己前进的方向,因此不共享任何代码。

我正在准备一个 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/

相关文章:

java - Java中如何停止计划的任务

java - 由 : java. lang.ClassNotFoundException : com. fasterxml.jackson.databind.JavaType not found 引起

java - Android使用抽屉导航滑动菜单

java - 为什么@FormParam 不支持content=type=application/json?

c# - 如何将 POST 参数转换为 Action 参数

java - 为 http url 请求类型传递多个 URL

android - 通过 Android Studio 和 Volley 的 CURL 请求

java - Spring(-Boot) & Vaadin - 在 Vaadin 导航器中设置默认 View

json - 使用@JsonIdentityInfo 时的 Jackson "MismatchedInputException: No Object Id found for an instance"

spring-boot - spring boot - 如何在前端关闭后停止后端re​​st api处理