小编use*_*939的帖子

JPA 插入对象图很慢

我正在尝试使用 JPA 对大型对象图进行级联保存。例如(我的对象图有点大但足够接近):

@Entity
@Table(name="a")
public class A {
  private long id;
  @OneToMany(cascade = CascadeType.ALL, mappedBy = "a")
  private Collection<B> bs;
}

@Entity
@Table(name="b")
public class B {
  private long id;
  @ManyToOne
  private A a;
}
Run Code Online (Sandbox Code Playgroud)

所以我试图保留一个包含 100 多个 B 的集合的 A。代码只是

em.persist(a);
Run Code Online (Sandbox Code Playgroud)

问题是,它很慢。我的保存大约需要 1300 毫秒。我查看了正在生成的 SQL,它的效率非常低。像这样的东西:

select a_seq.nextval from dual;
select b_seq.nextval from dual;
select b_seq.nextval from dual;
select b_seq.nextval from dual;
...
insert into a (id) values (1);
insert into b (id, fk) values (1, 1);
insert into …
Run Code Online (Sandbox Code Playgroud)

jpa toplink toplink-essentials

5
推荐指数
1
解决办法
2350
查看次数

标签 统计

jpa ×1

toplink ×1

toplink-essentials ×1