Spring / Hibernate - 如何通过外键ID插入记录?

时间:2012-01-16 17:29:05

标签: hibernate spring

我想要将大约100,000个对象插入到数据库中。我想利用Spring / Hibernate并创建List<MyPojo>并使用session.saveOrUpdate()来执行插入。

但是,MyPojo对象包含大约25个外键。通过Id执行那么多次查找以获得实际引用的对象将是非常低效的。

因此,我只想使用外键ID(与存储在数据库中的方式相同),而不是加载每个对象。

除了运行本机查询之外,还有其他解决方案吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以通过映射外键和对象来执行此操作,但将对象标记为延迟而不是“可更新”而不是“可插入”。

这是对象,但不用于写入值。

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "MY_POJO_FK", insertable = false, updatable = false)
private MyPojo myPojo;

下面是正常映射的外键

@Column(name = "MY_POJO_FK")
private Long myPojoFK;

这种方法的缺点是你必须单独更新外来对象(没有级联),但优点是你不会在需要之前加载外来对象。

如果您只是将其映射到写入数据,则根本无需担心映射对象。