我有一个服务方法:
@Transactional
@Override
public List<DLevelsDTO> getAll(InputDTO json ){
String idAdminPK = json.getIdAmminstrazionePK();
Long idAdminPKDecrypted = Long.parseLong(EncrypterUtils.decrypt(idAdminPK));
List<DLevels> entityList = dLevelsRepository.findAll();
List<DLevelsDTO> resultList = new ArrayList<DLevelsDTO>();
for(DLevels entity : entityList) {
DLevelsDTO dto = Converter.convert(entity, DLevelsDTO.class);
Optional<List<DUnitEntity>> optHList = dUnitsRepository.findUnit(idAdminPKDecrypted, entity.getCodiLevel());
if (optHList.isPresent()) {
List<DUnitDTO> jsonResponseList = new ArrayList<DUnitDTO>();
List<DUnitEntity> entityHList =optHList.get();
for(DUnitEntity entityH : entityHList) {
DUnitDTO jsonResponse = new DUnitDTO();
jsonResponse.setIdUnit(EncrypterUtils.encrypt(entityH.getSequIdUnitaOrganizzativaH()));
jsonResponse.setFkAdmin(EncrypterUtils.encrypt(entityH.getFkAdmin().longValue()));
jsonResponse.setCodiCodiceUo(entityH.getCodiCodiceUo());
jsonResponse.setDescDenomUo(entityH.getDescDenomUo());
jsonResponseList.add(jsonResponse);
}
dto.setList(jsonResponseList);
}
resultList.add(dto);
}
return resultList;
}
在对jpa存储库(findAll)的第一次调用中,结果长度为
最后的dto是:
列表结果列表=新的ArrayList()//
每个对象都有列表EntityList//
服务响应时间为10-15秒。。。
有没有减少服务时间的最佳方法?如果我使用Oracle表视图或递归查询而不是Java?
谢谢你的回复
这最好通过DTO方法和执行连接抓取的专用查询来解决。
话虽如此,我认为这是火焰持久性实体视图的完美用例。
我创建了这个库,以便在JPA模型和自定义接口或抽象类定义的模型之间进行简单的映射,类似于类固醇上的Spring数据投影。其思想是以您喜欢的方式定义目标结构(域模型),并通过JPQL表达式将属性(getter)映射到实体模型。
用例的DTO模型可以看起来像下面这样:
@EntityView(DLevels.class)
public interface DLevelsDTO {
@IdMapping
Long getId();
String getName();
// Not sure what the logic is in dUnitsRepository.findUnit()
@Mapping("units[id = :idAdminPKDecrypted AND codiLevel = VIEW(codiLevel)]")
List<DUnitDTO> getList();
@EntityView(DUnitEntity.class)
public abstract class DUnitDTO {
private final long sequIdUnitaOrganizzativaH;
private final long fkAdmin;
public DUnitDTO(
@Mapping("sequIdUnitaOrganizzativaH") long sequIdUnitaOrganizzativaH,
@Mapping("fkAdmin") long fkAdmin
) {
this.sequIdUnitaOrganizzativaH = EncrypterUtils.encrypt(sequIdUnitaOrganizzativaH);
this.fkAdmin = EncrypterUtils.encrypt(fkAdmin);
}
@IdMapping
public abstract Long getId();
public abstract String getCodiCodiceUo();
public abstract String getDescDenomUo();
public long getSequIdUnitaOrganizzativaH() {
return sequIdUnitaOrganizzativaH;
}
public long getFkAdmin () {
return fkAdmin;
}
}
}
查询是将实体视图应用于查询的问题,最简单的就是按id进行查询。
DLevelsDTO a=entityViewManager。查找(entityManager,DLevelsDTO.class,id)
Spring数据集成允许您像使用Spring数据投影一样使用它:https://persistence.blazebit.com/documentation/entity-view/manual/en_US/index.html#spring-数据特征
List<DLevelsDTO> findAll();
我使用Spring JPA规范来创建标准查询。我的代码如下所示: 我被告知这是一种糟糕的方法,我应该使用投影(DTO)从数据库中读取,因为创建实体并在之后映射它们很昂贵。问题是我不知道如何将规范与DTO相结合。要使用包含嵌套 DTO 和大量属性的复杂 DTO 来管理复杂和动态查询(来自用户输入的筛选器等)的最佳方式是什么?
问题内容: 我有这样的对象: 现在我只想获取主题和ID。有没有办法像这样获得它: 因为即使只使用此查询 我只能得到这样的记录: 我不希望获得具有属性ID和主题的对象数组。实现这一目标的最好方法是什么? 问题答案: 在Spring Data JPA中,您可以使用投影: 基于接口 : 基于类 (DTO): 然后在您的仓库中创建一个简单的查询方法: 您甚至可以创建动态查询方法: 然后像这样使用它:
问题内容: 我有一个使用单个数据库的企业应用程序,但是该应用程序需要支持 mysql , oracle 和 sql * server 作为安装选项。 为了 保持可移植性, 我们将 JPA批注 与 Hibernate 一起使用。我们还为每个要运行的数据库提供了一个测试平台实例。 该应用程序可以在 Maven中 很好地构建,并且我使用过 hibernate3-maven-plugin 并可以为给定的数
本文向大家介绍springMVC返回复杂的json格式数据方法,包括了springMVC返回复杂的json格式数据方法的使用技巧和注意事项,需要的朋友参考一下 一、springMVC返回json格式数据常用的写法是使用@ResponseBody注解,在每一个方法前加上这个注解,springMVC的json解析机制会自动把返回值(Object类型的对象)转换为json格式的数据,如果返回的json对
问题内容: 我是NHibernate(和ORMS)的新手,并试图掌握它提供的各种选择。作为参考,我将Fluent NHibernate与单独的业务对象配合使用,而后者又将DTO纯粹用于数据访问。我的应用程序体系结构必须同时支持Windows和Web“前端”。 我的选择是一般方法之一,因为似乎有很多选择。我的DTO看起来像下面的示例。每个DTO都有对ISession的引用,该引用从BO传递给它们。他
问题内容: 我正在寻找一种SQL注入安全技术,以便通过PHP和MySQLi一次插入很多行(大约2000年)。 我有一个必须包含所有值的数组。目前,我正在这样做: 我尝试了call_user_func_array(),但是它引起了stackoverflow。 什么是更快的方法(例如一次将它们全部插入?),但是仍然可以防止SQL注入(如准备好的语句)和stackoverflows呢? 谢谢! 问题答案