【发布时间】:2018-07-17 12:32:08
【问题描述】:
我遇到了休眠问题,当我尝试将我的对象保存在数据库中时,它看起来很慢。
所以,关注的模型是这样的:
@Entity
@Table(name = "T_PARENT")
public class ParentEntity implements Serializable {
// Id
// Attributes
// Child relation
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="xxxx")
private List<ChildEntity> childs;
// Getters & setters
}
@Entity
@Table(name = "T_CHILD")
public class ChildEntity implements Serializable {
// Id
// Attributes
// Child relation
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="yyyyy")
private List<ChildChildEntity> childs;
// Getters & setters
}
@Entity
@Table(name = "T_CHILD_CHILD")
public class ChildChildEntity implements Serializable {
// Id
// Attributes
// Getters & setters
}
我使用 JpaRepository (spring) 来管理数据库中的数据。 我们在“parent”上调用“save”方法来持久化“child”和“childChild”(只创建了parent的repository)
数据很少,没有问题(例如:1 个父母/20 个孩子,每个孩子有 200 个 childChild) 但是当我们有一个重要的卷时,休眠查询是无休止的......(例如:1个父母/ 40个孩子,每个孩子有600个孩子)
您是否知道如何通过仅使用一个存储库(父级)来提高性能,因为我不想拆分处理...
谢谢
【问题讨论】:
-
请检查我的回答stackoverflow.com/a/50882952 - 它应该有帮助..
-
我无法在单个对象(我坚持的父对象)上调用 saveAll 方法...
-
对于单个对象(父对象),您也可以使用
save()。它还可以通过批处理来节省孩子。 -
对于 24000 次插入,需要 8 分钟以上...
-
然后使用
saveAll- 请参阅我在答案中链接的示例...首先 - 在循环中准备对象,然后保存它们。
标签: hibernate spring-data-jpa hibernate-onetomany