wuwenyishi / blog

0 stars 0 forks source link

Java 开发随笔 | 沉默的猴子 #15

Open wuwenyishi opened 8 months ago

wuwenyishi commented 8 months ago

https://blog.xuemingde.com/posts/2D6CV2C.html#more

一花一世界,一念一菩提

wuwenyishi commented 8 months ago

spring.datasource.schema 与 spring.datasource.data

在 Spring Boot 中,spring.datasource.schemaspring.datasource.data 属性用于配置如何初始化数据源。

schema 和 data 之间的主要区别在于它们在初始化过程中的执行顺序。

  1. Spring Boot 首先执行 schema 脚本。
  2. 然后,Spring Boot 执行 data 脚本。

此顺序很重要,因为 schema 脚本用于创建数据库结构,而 data 脚本用于填充数据。如果颠倒了顺序,则 data 脚本可能会失败,因为它们将尝试插入数据到不存在的表中。

以下是一些使用 schemadata 脚本的示例:

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-locationsspring.datasource.data-locations 属性来指定脚本的位置。这些属性接受指向脚本文件或目录的路径。

wuwenyishi commented 8 months ago

spring.jpa.hibernate.ddl-auto

spring.jpa.hibernate.ddl-auto 属性用于配置 Hibernate 如何在启动时管理数据库架构。它接受以下值:

以下是一些示例:

默认值:

默认情况下,spring.jpa.hibernate.ddl-auto 设置为 none。这意味着 Hibernate 不会在启动时自动创建或更新数据库架构。

建议:

在生产环境中,建议将 spring.jpa.hibernate.ddl-auto 设置为 update。这将确保数据库架构与实体类保持同步。在开发或测试环境中,可以使用 createcreate-drop 设置来创建和删除数据库架构。

注意:如果使用 createcreate-drop 设置,则在关闭应用程序时将删除数据库架构。因此,在使用这些设置时务必小心。

wuwenyishi commented 8 months ago

数据库初始化-jpa配置方式

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文件,来实现数据初始化

本文中需要重点关注的几个配置:

wuwenyishi commented 8 months ago

java中一种密码加密包方式

BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); System.out.println(encoder.encode("123456"));

wuwenyishi commented 8 months ago

idea远程debug

远程debug部署在docker容器里的服务,可在Dockerfile里增加下面代码:
ENTRYPOINT ["java","-jar","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=端口号","服务jar包名.jar"]

wuwenyishi commented 7 months ago

activiti 的 databaseSchemaUpdate true和create-drop的区别

在 Activiti 中,databaseSchemaUpdate 属性用于指定在启动时如何处理数据库模式。它有两种主要选项:truecreate-drop

databaseSchemaUpdate=true

databaseSchemaUpdate=create-drop

选择哪一个?

选择 databaseSchemaUpdate 的正确值取决于你的具体需求:

其他注意事项

我希望这能帮助你理解 databaseSchemaUpdate 属性的不同选项以及如何选择最适合你需求的选项。