首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Spring启动时使用H2数据库进行大容量插入

问在Spring启动时使用H2数据库进行大容量插入
EN

Stack Overflow用户
提问于 2021-02-28 20:21:38
回答 1查看 446关注 0票数 0

但是大容量插入不起作用。

型号:

代码语言:javascript
复制
@Table(name = "user")
@Entity
public class User
{
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private Long id;

    private String name;
}

存储库:

代码语言:javascript
复制
public interface IUserRepository extends JpaRepository<User, Long>
{
}

测试:

代码语言:javascript
复制
@SpringBootApplication
public class SpringBootApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootApplication.class, args);
    }

    @Bean
    ApplicationRunner init(IUserRepository userRepository)
    {
        return args -> {
            User user = new User();
            user.setName("Test-1");

            User user1 = new User();
            user1.setName("Test-2");
            userRepository.saveAll(Arrays.asList(user, user1));
        };
    }

}

属性:

代码语言:javascript
复制
spring.datasource.url=jdbc:h2:~/test;TRACE_LEVEL_FIle=4
spring.jpa.hibernate.ddl-auto=create
spring.datasource.username=sa
spring.jpa.properties.hibernate.jdbc.batch_size=5

输出:

代码语言:javascript
复制
/*SQL #:1*/call next value for hibernate_sequence;
2021-02-28 15:13:35.110  INFO 43465 --- [           main] h2database                               
/*SQL l:58 #:1*/SELECT VALUE FROM INFORMATION_SCHEMA.SETTINGS WHERE NAME=? {1: 'QUERY_TIMEOUT'};
2021-02-28 15:13:35.119  INFO 43465 --- [           main] h2database                               
/*SQL #:1*/call next value for hibernate_sequence;
2021-02-28 15:13:35.136  INFO 43465 --- [           main] h2database                               
/*SQL l:41 #:1*/insert into user (name, id) values (?, ?) {1: 'Test-1', 2: 1};
2021-02-28 15:13:35.137  INFO 43465 --- [           main] h2database                                
/*SQL l:41 #:1*/insert into user (name, id) values (?, ?) {1: 'Test-2', 2: 2};
2021-02-28 15:13:35.139  INFO 43465 --- [           main] h2database                               
/*SQL */COMMIT;
2021-02-28 15:13:35.139  INFO 43465 --- [           main] h2database                               
/*SQL */COMMIT;

如何使用Spring-Boot在H2数据库中测试批量插入?或者这是可能的?

EN

回答 1

Stack Overflow用户

发布于 2021-02-28 20:39:27

这里不是spring boot负责批量插入,它是hiberate (或者您正在使用的jpa提供程序),它只是在spring应用程序中运行。

Spring boot为您提供了配置hibernate的方法和配置键,但本质上您正在配置的是hibernate。

使hibernate批处理成为插件的原因是:

代码语言:javascript
复制
    spring.jpa.properties.hibernate.jdbc.batch_size=5
    spring.jpa.properties.hibernate.order_inserts=true

对于更新:

代码语言:javascript
复制
spring.jpa.properties.hibernate.order_updates=true
spring.jpa.properties.hibernate.batch_versioned_data=true
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66409050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档