Appearance
环境搭建
相关代码模块在:spring-boot-demo -> spring-data-jpa
- 添加依赖
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: '2.6.2'
// https://mvnrepository.com/artifact/mysql/mysql-connector-java
implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.29'
- yml配置
server:
port: 9004
servlet:
context-path: /jpa
spring:
jpa:
properties:
hibernate:
hbm2ddl:
auto: update
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
format_sql: true
enable_lazy_load_no_trans: true
show-sql: true
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/spring-data-jpa?useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password: Jiliang272
hikari:
# 最大连接数,默认10
maximum-pool-size: 30
# 最小空先连接数
minimum-idle: 10
# 连接超市时间,默认是30000(毫秒)
connection-timeout: 60000
# 空先连接的最长生命周期,值0标识无限生命周期(毫秒)
max-lifetime: 600000
# 连接到数据时等待最长时间(秒)
login-timeout: 5
配置解释
- hibernate.hbm2ddl:根据实体类自动创建和更新数据表结构,而使用spring data jpa可以省略传统下你过目开发中的见表工作
- hibernate.hbm2ddl.auto取值
- create:根据实体类生成表,每次运行都会删除上一次的表,之前保存的数据会丢失
- create-drop:根据实体类生成表,但是当sessionFactory关闭时,新生成的表就会被删除,即表的存在其尽在项目运行阶段
- update:最常用的属性,根据实体类生成表,如果实体类的属性发生改变,则会在对应的表中添加属性,但表中的就字段仍然存在,也不会删除以前的数据。如果更改了属性名称,原来的属性对应表字段不会删除,而会新增对应属性的表字段
- validate:指挥和数据库中的表进行比较,不会创建表,但是会插入新值
- hibernate.dialect:对特定的关系数据库生成给优化的sql
- hibernate.format_sql:格式化sql,让输出的sql更符合阅读习惯
- hibernate.enable_lazy_load_trans:默认为false,如果设置为true,则可以在测试环境下模拟出事务的效果,以便使用它的懒加载
- jpa.properties.show-sql:将底层的sql语句输出到控制台