设为首页 - 加入收藏 潍坊站长网 (http://www.0536zz.com)- 国内知名站长资讯网站,提供最新最全的站长资讯,创业经验,网站建设等!
热搜: 2018 2019 redis 建设
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

一文搞懂如何在Spring Boot正确中使用JPA

发布时间:2019-10-20 14:35 所属栏目:[优化] 来源:SnailClimb
导读:JPA 这部分内容上手很容易,但是涉及到的东西还是挺多的,网上大部分关于 JPA 的资料都不是特别齐全,大部分用的版本也是比较落后的。另外,我下面讲到了的内容也不可能涵盖所有 JPA 相关内容,我只是把自己觉得比较重要的知识点总结在了下面。很多地方我

JPA 这部分内容上手很容易,但是涉及到的东西还是挺多的,网上大部分关于 JPA 的资料都不是特别齐全,大部分用的版本也是比较落后的。另外,我下面讲到了的内容也不可能涵盖所有 JPA 相关内容,我只是把自己觉得比较重要的知识点总结在了下面。很多地方我自己也是参考着官方文档写的,官方文档非常详细了,非常推荐阅读一下。这篇文章可以帮助对 JPA 不了解或者不太熟悉的人来在实际项目中正确使用 JPA。

一文搞懂如何在Spring Boot正确中使用JPA

另外,我发现网上关于连表查询这一块并没有太多比较有参考价值的博客,所以对这部分也做了详细的总结,以供大家学习参考。

项目代码基于 Spring Boot 最新的 2.1.9.RELEASE 版本构建(截止到这篇文章写完),另外,新建项目的过程就不多说了。

一 JPA 基础:常见操作

1.相关依赖

我们需要下面这些依赖支持我们完成这部分内容的学习:

  1. ?
  2. ?????????
  3. ????????????org.springframework.boot?
  4. ????????????spring-boot-starter-web?
  5. ?????????
  6. ?????????
  7. ????????????org.springframework.boot?
  8. ????????????spring-boot-starter-data-jpa?
  9. ?????????
  10. ?????????
  11. ????????????mysql?
  12. ????????????mysql-connector-java?
  13. ????????????runtime?
  14. ?????????
  15. ?????????
  16. ????????????org.projectlombok?
  17. ????????????lombok?
  18. ????????????true?
  19. ?????????
  20. ?????????
  21. ????????????org.springframework.boot?
  22. ????????????spring-boot-starter-test?
  23. ????????????test?
  24. ?????????
  25. ?????

2.配置数据库连接信息和JPA配置

下面的配置中需要单独说一下 spring.jpa.hibernate.ddl-auto=create这个配置选项。

这个属性常用的选项有四种:

  1. create:每次重新启动项目都会重新创新表结构,会导致数据丢失
  2. create-drop:每次启动项目创建表结构,关闭项目删除表结构
  3. update:每次启动项目会更新表结构
  4. validate:验证表结构,不对数据库进行任何更改

但是,一定要不要在生产环境使用 ddl 自动生成表结构,一般推荐手写 SQL 语句配合 Flyway 来做这些事情。

  1. spring.datasource.url=jdbc:mysql://localhost:3306/springboot_jpa?useSSL=false&serverTimezone=CTT?
  2. spring.datasource.username=root?
  3. spring.datasource.password=123456?
  4. #?打印出?sql?语句?
  5. spring.jpa.show-sql=true?
  6. spring.jpa.hibernate.ddl-auto=create?
  7. spring.jpa.open-in-view=false?
  8. #?创建的表的?ENGINE?为?InnoDB?
  9. spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL55Dialect?

3.实体类

我们为这个类添加了 @Entity 注解代表它是数据库持久化类,还配置了主键 id。

  1. import?lombok.Data;?
  2. import?lombok.NoArgsConstructor;?
  3. ?
  4. import?javax.persistence.Column;?
  5. import?javax.persistence.Entity;?
  6. import?javax.persistence.GeneratedValue;?
  7. import?javax.persistence.GenerationType;?
  8. import?javax.persistence.Id;?
  9. ?
  10. @Entity?
  11. @Data?
  12. @NoArgsConstructor?
  13. public?class?Person?{?
  14. ?????
  15. ????@Id?
  16. ????@GeneratedValue(strategy?=?GenerationType.IDENTITY)?
  17. ????private?Long?id;?
  18. ????@Column(unique?=?true)?
  19. ????private?String?name;?
  20. ????private?Integer?age;?
  21. ?
  22. ????public?Person(String?name,?Integer?age)?{?
  23. ????????this.name?=?name;?
  24. ????????this.age?=?age;?
  25. ????}?
  26. ?
  27. }?

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章