Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 强制Hibernate或通用JPA供应商将INSERT INTO与多个值一起使用?_Java_Hibernate_Sqlite_Jpa_Spring Data - Fatal编程技术网

Java 强制Hibernate或通用JPA供应商将INSERT INTO与多个值一起使用?

Java 强制Hibernate或通用JPA供应商将INSERT INTO与多个值一起使用?,java,hibernate,sqlite,jpa,spring-data,Java,Hibernate,Sqlite,Jpa,Spring Data,我发现,这个方法, Iterable<S> CrudRepository#save(Iterable<S> entities) 在实体管理器上执行它,它的工作速度要快得多(10倍甚至更多) 我可以让Spring数据本身以同样的速度工作吗 例如,是否有任何选项可以强制Hibernate或任何底层库使用这种多值查询 我在这里使用SQLite和类: 也许我能以某种方式提升这门课 更新 我将身份生成用于 @Entity @Table(name = "variable_value

我发现,这个方法,

Iterable<S> CrudRepository#save(Iterable<S> entities)
在实体管理器上执行它,它的工作速度要快得多(10倍甚至更多)

我可以让Spring数据本身以同样的速度工作吗

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

我在这里使用SQLite和类:

也许我能以某种方式提升这门课

更新

我将身份生成用于

@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\u size
选项以启用insert语句的自动批处理。有关此选项和相关选项的更多详细信息


但是,您还必须验证在SQLite方言的自定义实现中是否一切都做得很好以支持它。

据说,当发生标识生成时,批处理被禁用。但这是我的情况。我不仅要生成id-s,而且要以适合Sqlite的奇怪方式来实现这一点!请参阅我的更新。如果我使用ID生成,我能从批处理中获益吗?您的ID生成策略不是
IDENTITY
,而是基于表的策略,因此理论上您可以使用批处理。但正如我在回答中所说的,这可能取决于您使用的自定义方言的能力,您必须尝试并调查它。
@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;