Open wuwenyishi opened 8 months ago
在 Spring Boot 中,spring.datasource.schema
和 spring.datasource.data
属性用于配置如何初始化数据源。
schema 和 data 之间的主要区别在于它们在初始化过程中的执行顺序。
schema
脚本。data
脚本。此顺序很重要,因为 schema
脚本用于创建数据库结构,而 data
脚本用于填充数据。如果颠倒了顺序,则 data
脚本可能会失败,因为它们将尝试插入数据到不存在的表中。
以下是一些使用 schema
和 data
脚本的示例:
schema.sql:
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
data.sql:
INSERT INTO users (name, email) VALUES ('John Doe', 'john.doe@example.com');
INSERT INTO users (name, email) VALUES ('Jane Doe', 'jane.doe@example.com');
这些脚本将创建一个名为 users
的表,并插入两行数据。
请注意:您还可以使用 spring.datasource.schema-locations
和 spring.datasource.data-locations
属性来指定脚本的位置。这些属性接受指向脚本文件或目录的路径。
spring.jpa.hibernate.ddl-auto
属性用于配置 Hibernate 如何在启动时管理数据库架构。它接受以下值:
以下是一些示例:
默认值:
默认情况下,spring.jpa.hibernate.ddl-auto
设置为 none。这意味着 Hibernate 不会在启动时自动创建或更新数据库架构。
建议:
在生产环境中,建议将 spring.jpa.hibernate.ddl-auto
设置为 update。这将确保数据库架构与实体类保持同步。在开发或测试环境中,可以使用 create 或 create-drop 设置来创建和删除数据库架构。
注意:如果使用 create
或 create-drop
设置,则在关闭应用程序时将删除数据库架构。因此,在使用这些设置时务必小心。
spring.datasource.initialization-mode 同样需要将配置设置为 always
使用jpa的配置方式,将ddl-auto设置为create或者create-drop时,会自动搜索@Entity实体对象,并创建为对应的表
spring.jpa.hibernate.ddl-auto: update,此时在资源目录下,新建 data.sql
若spring.jpa.hibernate.ddl-auto: create,则再资源目录下,新建import.sql文件,来实现数据初始化
本文中需要重点关注的几个配置:
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); System.out.println(encoder.encode("123456"));
远程debug部署在docker容器里的服务,可在Dockerfile里增加下面代码:
ENTRYPOINT ["java","-jar","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=端口号","服务jar包名.jar"]
在 Activiti 中,databaseSchemaUpdate
属性用于指定在启动时如何处理数据库模式。它有两种主要选项:true
和 create-drop
。
databaseSchemaUpdate=true
databaseSchemaUpdate=create-drop
选择哪一个?
选择 databaseSchemaUpdate
的正确值取决于你的具体需求:
true
通常是开发和测试环境的最佳选择,因为它允许你轻松地更新数据库模式而不丢失数据。create-drop
通常是生产环境的最佳选择,因为它确保数据库模式始终是最新的,并且不会保留旧数据。但是,你应该定期备份你的数据,以防万一出现问题。其他注意事项
create-drop
,因为每次启动应用程序时都会丢失数据。databaseSchemaUpdate
的行为可能有所不同。请查阅嵌入式数据库的文档以获取更多详细信息。我希望这能帮助你理解 databaseSchemaUpdate
属性的不同选项以及如何选择最适合你需求的选项。
https://blog.xuemingde.com/posts/2D6CV2C.html#more
一花一世界,一念一菩提