Spring JPA 使用笔记01

Spring JPA 使用笔记01

  • 如果需要程序生成分布式主键,那么注解上不需要@GeneratedValue, 否则hibernate不会生成该字段的sql。
  • spring boot 2.x, 如果需要数据库自增长主键,需要配置use-new-id-generator-mappings: false.
  • spring boot 默认开启了open-in-view, 也就是数据层的Session从Controller层就开启,主要是针对前端模板渲染使用,如果是纯api接口,可以关闭spring.jpa.open-in-view: false.
  • 如果@Entity使用父类继承,需要在父类上加上注解@MappedSuperclass, JPA在扫描的时候才会识别父类的字段.
  • 如果使用了@CreatedDate, @LastModifiedDate, 需要在启动类上加上注解:@EnableJpaAuditing.
  • 注解@DynamicUpdate的逻辑是: 在更新的时候,先查询数据库的数据,然后和更新的对象进行比较,如果有改动的,才会更新,生成sql语句,如果前端传入的数据只有某些字段,那么其他字段为NULL,Hibernate会认为是修改了,所以会刷新所有字段为新的对象。如果要实现只更新某些字段,可以先查询出原对象,然后把需要修改的值赋值到原对象,保存即可。可以使用BeanUtils.copy,指定某些字段需要忽略的即可。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容