我想要将大约100,000个对象插入到数据库中。我想利用Spring / Hibernate并创建List<MyPojo>
并使用session.saveOrUpdate()
来执行插入。
但是,MyPojo对象包含大约25个外键。通过Id执行那么多次查找以获得实际引用的对象将是非常低效的。
因此,我只想使用外键ID(与存储在数据库中的方式相同),而不是加载每个对象。
除了运行本机查询之外,还有其他解决方案吗?
谢谢!
答案 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;
这种方法的缺点是你必须单独更新外来对象(没有级联),但优点是你不会在需要之前加载外来对象。
如果您只是将其映射到写入数据,则根本无需担心映射对象。