Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate:关系导致的性能问题_Java_Spring_Hibernate - Fatal编程技术网

Java Hibernate:关系导致的性能问题

Java Hibernate:关系导致的性能问题,java,spring,hibernate,Java,Spring,Hibernate,我使用Hibernate Tools 4.0.0为SpringMVC Hibernate Oracle web应用程序生成实体类,并使用Jackson lib进行JSON转换。我需要基于注释的类,因此我相应地配置了工具 数据库中适当定义了关系和约束。结果,实体类在连接列上生成了两种类型的注释- @ManyToOne(fetch = FetchType.LAZY) // I modified to @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(n

我使用Hibernate Tools 4.0.0为SpringMVC Hibernate Oracle web应用程序生成实体类,并使用Jackson lib进行JSON转换。我需要基于注释的类,因此我相应地配置了工具

数据库中适当定义了关系和约束。结果,实体类在连接列上生成了两种类型的注释-

@ManyToOne(fetch = FetchType.LAZY) 
// I modified to @ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "CUST_CODE")

我一直在经历一个相当糟糕的性能,显然是因为在急切获取的情况下,Hibernate会尝试提前获取所有依赖类的数据

我将FetchType改回LAZY,性能仍然和以前一样差

我注意到,当Jackson lib尝试将数据转换为JSON时,在返回响应时,也会检索具有FetchType.LAZY的manytone关系中的所有数据。因此,无论是懒惰的还是急切的,在响应时都需要几乎相同的时间和数据大小


我的问题-如何通过正确管理关系来提高绩效?如果我从DB或仅从实体类中删除这些关系,这将意味着我没有利用Hibernate的功能。在其他项目中如何处理此类场景?

问题不在于关联。问题在于将实体序列化为JSON的方式。添加Jackson注释,使其忽略您不想序列化的关联。或者创建缺少您不想发送的关系的DTO,然后将其序列化。是否使用服务Bean将实体Bean转换为未链接的Bean DTO?我希望您不要将DAO直接注入控制器bean。@IanMcLaird-我做了与您建议的完全相同的事情。但是,我不确定这是否是正确的做法。我有一个服务层来做这件事。我不直接将DAO注入控制器,但您是否在另一个未链接到数据库的bean(称为DTO)中转换实体bean,并将JSON转换应用于DTO而不是实体。您是否可以发布问题中的代码或服务层示例?
@OneToMany(fetch = FetchType.LAZY, mappedBy = "tempCustHeader")