当前位置: 首页 > 知识库问答 >
问题:

Spring Boot-加载初始数据

艾修筠
2023-03-14

我想知道在应用程序启动之前加载初始数据库数据的最佳方法是什么?我正在寻找的是一些东西,将填补我的H2数据库与数据。

例如,我有一个域模型“user”我可以通过转到/users来访问用户,但最初数据库中没有任何用户,所以我必须创建它们。是否存在自动填充数据库的数据?

@Component
public class DataLoader {

    private UserRepository userRepository;

    @Autowired
    public DataLoader(UserRepository userRepository) {
        this.userRepository = userRepository;
        LoadUsers();
    }

    private void LoadUsers() {
        userRepository.save(new User("lala", "lala", "lala"));
    }
}

但我很怀疑这是最好的方法。还是真的?

共有1个答案

亢仰岳
2023-03-14

您可以在src/main/resources文件夹中创建一个data.sql文件,它将在启动时自动执行。在这个文件中,您可以添加一些insert语句,例如:

INSERT INTO users (username, firstname, lastname) VALUES
  ('lala', 'lala', 'lala'),
  ('lolo', 'lolo', 'lolo');

类似地,您也可以创建schema.sql文件(或schema-h2.sql)来创建您的模式:

CREATE TABLE task (
  id          INTEGER PRIMARY KEY,
  description VARCHAR(64) NOT NULL,
  completed   BIT NOT NULL);

虽然通常不需要这样做,因为Spring boot已经将Hibernate配置为基于内存数据库的实体创建模式。如果您真的想要使用schema.sql,则必须通过将其添加到应用程序中来禁用此功能。属性:

spring.jpa.hibernate.ddl-auto=none
spring.datasource.initialization-mode=always

为此,您必须配置spring.datasource.platform属性:

spring.datasource.platform=h2
 类似资料:
  • 问题内容: 我想知道在应用程序启动之前加载初始数据库数据的最佳方法是什么?我正在寻找的东西将用数据填充我的H2数据库。 例如,我有一个域模型“ User”,我可以通过转到/ users来访问用户,但是最初数据库中没有任何用户,所以我必须创建它们。无论如何,是否有自动用数据填充数据库的信息? 目前,我有一个由容器实例化并为我创建用户的Bean。 例: 但是我非常怀疑这是最好的方法。还是? 问题答案:

  • 问题内容: 我正在使用我使用android studio Tabbed Activity 创建的应用程序上工作,我选择了此活动,以便在用户滑动时从json url加载一些数据,并且我创建了另一个类,该类可以在方法上获取JSON数据,并且所有这些都可以正常工作,除非在应用程序时从调用方法的主要活动开始,并且当我调用布局时未填充任何数据时 ,我想要的是加载应用程序MainActivity时要显示的数据

  • > 该服务使用SpringBoot、Maven、MongoDB和Ehcache。 服务需要一个快速且频繁缓存的服务器,所以最终,我选择了Ehcache。 所有缓存都将以几乎相同的频率调用,因此在这种情况下没有热数据或冷数据。 MongoDB中的原始数据每天都会被定时器服务更新,所以我每天要做的就是将所有更新的数据加载到Ehcache中。 这些数据中的每一项都彼此有联系,就像您使用一个来查找另一个的

  • 本文向大家介绍SpringBoot使用flyway初始化数据库,包括了SpringBoot使用flyway初始化数据库的使用技巧和注意事项,需要的朋友参考一下 概述 Flyway这款数据库版本工具就算大家没有使用过但也略有耳闻了,SpringBoot对该款工具进行集成的框架可以让我们在启动SpringBoot应用时自动去找SQL版本文件进行比对执行,但在迁移或初始化时往往还是需要先手动进行下数据库

  • 问题内容: 我应该传递什么值来为N个项目创建有效的/ 基于结构的结构? 在中,有效数字为N(N已假定未来增长)。a的参数应该是什么?((int)(N * 0.75d),0.75d)?更多?减?更改负载系数有什么影响? 问题答案: 关于负载因子,我将简单引用HashMap javadoc : 通常,默认负载因子(.75)在时间和空间成本之间提供了很好的折衷。较高的值会减少空间开销,但会增加查找成本(