gpt4 book ai didi

java - 强制 Hibernate 或一般 JPA 供应商使用具有多个值的 INSERT INTO?

转载 作者:行者123 更新时间:2023-11-30 10:30:33 25 4
gpt4 key购买 nike

我发现,那个方法

Iterable<S> CrudRepository#save(Iterable<S> entities)

工作很慢。

如果相反,我自己采用 Iterable 并创建这样的长查询

INSERT INTO mytable (field1, field2) VALUES
(value1, value2),
(value3, value4),
...
(valueN, valueM);

并针对实体管理器执行它,它运行得更快(10 倍或更多)。

我能让 Spring-Data 本身同样快速地工作吗?

例如,是否有任何选项可以强制 Hibernate 或任何底层库使用此类多值查询?

我正在使用 SQLite 和来自这里的类:https://stackoverflow.com/a/24233241/258483

也许我可以以某种方式改进这门课?

更新

我正在使用身份生成

@Entity
@Table(name = "variable_values")
public class VariableValue {

@Id
@Column(name="id")
@GeneratedValue(generator="sqlite")
@TableGenerator(name="sqlite", table="sqlite_sequence",
pkColumnName="name", valueColumnName="seq",
pkColumnValue="variable_values")
@Getter
@Setter
private long id;

这是否意味着我无法从批处理中获益?

最佳答案

您必须指定 hibernate.jdbc.batch_size 选项才能启用插入语句的自动批处理。 Here是此选项和相关选项的更多详细信息。

但是,您还必须验证是否已正确完成所有操作以在 SQLite 方言的自定义实现中支持它。

关于java - 强制 Hibernate 或一般 JPA 供应商使用具有多个值的 INSERT INTO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43666358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com