当前位置: 代码迷 >> java >> 使用CrudRepository从View获取数据
  详细解决方案

使用CrudRepository从View获取数据

热度:56   发布时间:2023-07-26 14:24:24.0

对于这个问题,我不是在寻找一个解决方案,而是寻找一个方向,我可以从哪里开始,因此不共享任何代码。

我正在准备一个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来实现同样的目标吗?

我在很多地方搜索过,但没有找到任何有用的东西。

如果有人对此有任何线索,请告诉我。

CrudRepository的读取方法应该可以正常工作。 对于编写方法,视图需要可更新,请 。

如果您只想读取而不是写入存储库,则可以通过复制CrudRepository的源代码并删除所有编写方法来创建ReadOnlyRepository

请注意,JPA仍会尝试保留对托管实体所做的更改。 为了避免这种情况并且还要避免脏检查的成本,如果使用Hibernate,可以 。

  相关解决方案