spring data jpa ddl-auto 属性

springdata jpa:

问题:代码程序实体类更改,竟然改了数据库字段;

 

结果:希望实体类字段根据数据库表字段的更新而更新;不是数据库表根据实体类的更新而更新;

 

jpa:
    database: MYSQL
    show-sql: false
    hibernate:
      show-sql: false
      ddl-auto: update
      naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy
    properties:
      hibernate.dialect: org.hibernate.dialect.MySQL5Dialect

 

解释:

ddl-auto:主要存在四种属性:create,create-drop,update和validate

  • ddl-auto:create ----每次运行该程序,没有表格会新建表格,表内有数据会清空;
  • ddl-auto:create-drop ----每次程序结束的时候会清空表
  • ddl-auto:update ---- 每次运行程序,没有表格会新建表格,表内有数据不会清空,只会更新
  • ddl-auto: validate ---- 运行程序会校验数据与数据库的字段类型是否相同,不同会报错。

补充:

jpa是一种规范,但是对jpa支持最好的就是hibernate,所以一般来说jpa指的就是hibernate是实现的jpa。在使用springboot时,使用jpa,加上jpa的起步以来spring-boot-starter-data-jpa即可。

在配置文件中除了配置数据源以外,还可以配置一些方便开发使用的选项,如spring.jpa.show-sql=true,这个属性可以在操作数据库时显示sql语句。

还有一个就是上面的ddl-auto。

 

如果希望实体类发生改动而数据库表做出相应的更改且不破坏数据库现有的数据,要将spring.jpa.hibernate.ddl-auto属性值设置为update,同时需要在实体类上的@Table注解中加上catalog属性,值为数据库命。

这里还有一点,就算把ddl-auto设置成update值,也不能识别对数据库表结构的所有更改,往往只能识别出增加的字段,比如修改字段名,修改字段类型或者删除一个字段都是不能够识别的。

 

总结:

所以说,数据库表结构修改了,如何让实体类自适应数据库表结构:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Data JPASpring Data 的一个子项目,它提供了一套方便的 API,使得在 Spring 应用程序中使用 JPA 变得更容易。以下是 Spring Data JPA 的使用步骤: 1. 在 pom.xml 中添加 Spring Data JPA 的依赖: ``` <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>2.5.3</version> </dependency> ``` 2. 配置数据源和 JPA: ``` spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=create-drop spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect ``` 3. 创建实体类,并使用 JPA 注解进行映射: ``` @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") private String name; @Column(name = "age") private Integer age; // getter 和 setter } ``` 4. 创建 Repository 接口,继承 JpaRepository: ``` public interface UserRepository extends JpaRepository<User, Long> { List<User> findByName(String name); } ``` 5. 在 Service 中使用 Repository: ``` @Service public class UserService { @Autowired private UserRepository userRepository; public List<User> findUsersByName(String name) { return userRepository.findByName(name); } } ``` 通过以上步骤,就可以在 Spring 应用程序中使用 Spring Data JPA 进行数据库操作了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值