我正在尝试使用 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)