设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 创业者 手机
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

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

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

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

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

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

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

一 JPA 基础:常见操作

1.相关依赖

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

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

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.  

如何检验你是否正确完成了上面 3 步?很简单,运行项目,查看数据如果发现控制台打印出创建表的 sql 语句,并且数据库中表真的被创建出来的话,说明你成功完成前面 3 步。

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读