我有一个spring Boot 应用程序,我想使用一个DB查询插入多个记录:-
public void addEvents() {
String sql = "INSERT INTO Data values(1,'Data 1'), (2,'Data 2'),(3,'Data 3')";
EntityManager entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();
entityManager.createNativeQuery(sql).executeUpdate();
entityManager.getTransaction().commit();
}
实体类:-
@Entity
@Table
public class Data {
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String name;
public Data(String name) {
this.name = name;
}
public Data(Integer id, String name) {
this.id = id;
this.name = name;
}
public Data() {
}
}
这里的数据是我正在插入的一个实体。我需要在几秒钟内在我的数据库中插入超过10000行。因此,触发单独的数据库调用代价太高了。因此,我使用了一个查询来实现此目的。此查询是一个原生查询。有人能告诉我,JPA是否提供了一个现成的API来在一个数据库cl中插入多个实体吗?
1条答案
按热度按时间ylamdve61#
您可以使用spring-data的 saveAll 方法进行批量插入。
在
application.properties
中添加以下属性您可以看到使用
spring.jpa.show-sql
生成的查询更新:在您的pom.xml中添加以下依赖项,
以上依赖关系将显示在日志中,如果批处理正在发生或没有。