java My app正在将Db实体序列化到de-webservice层。如何将所有内容都转换为DTO?
我遇到了一个性能有很大问题的应用程序。hibernate实体的定义实际上都是使用渴望的定义。我认为最初这不是一个问题,因为他们只有很少的实体,但是已经到了性能非常糟糕的时候。 我知道如何解决这个问题,但这些实体是在webservice层发布的。 在开始更改数据库模型之前,我想先断开应用程序层。作为表示层中的实体,很难进行更改
我曾想过复制webservice层中的DB实体(没有对持久性层的引用)。这样我就可以创建和实体一样多的DTO。 然后使用objectmapper或jmapper之类的框架将它们转换为新的DTO
在花很多时间做这件事之前。听起来是个好主意?你有没有找到更容易解决问题的方法
# 1 楼答案
听起来你在找Blaze-Persistence Entity Views
我创建了这个库,以便在JPA模型和自定义接口或抽象类定义的模型之间进行简单的映射,类似于类固醇上的Spring数据投影。其思想是以您喜欢的方式定义目标结构(域模型),并通过JPQL表达式将属性(getter)映射到实体模型
对于Blaze持久性实体视图,示例DTO模型可能如下所示:
查询是将实体视图应用于查询的问题,最简单的就是按id进行查询
UserDto a = entityViewManager.find(entityManager, UserDto.class, id);
Spring数据集成允许您像Spring数据投影一样使用它:https://persistence.blazebit.com/documentation/entity-view/manual/en_US/index.html#spring-data-features
最好的是,它只会获取实际需要的状态