副问题[/!--empirenews.page--]
JPA 这部门内容上手很轻易,可是涉及到的对象照旧挺多的,网上大部门关于 JPA 的资料都不是出格一切,大部门用的版本也是较量落伍的。其它,我下面讲到了的内容也不行能涵盖全部 JPA 相干内容,我只是把本身认为较量重要的常识点总结在了下面。许多处所我本身也是参考着官方文档写的,官方文档很是具体了,很是保举阅读一下。这篇文章可以辅佐对 JPA 不相识可能不太认识的人来在现实项目中正确行使 JPA。

其它,我发明网上关于连表查询这一块并没有太多较量有参考代价的博客,以是对这部门也做了具体的总结,以供各人学衔拷寮。
项目代码基于 Spring Boot 最新的 2.1.9.RELEASE 版本构建(截至到这篇文章写完),其它,新建项目标进程就不多说了。
一 JPA 基本:常见操纵
1.相干依靠
我们必要下面这些依靠支持我们完成这部门内容的进修:
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-jpa</artifactId>
- </dependency>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
2.设置数据库毗连信息和JPA设置
下面的设置中必要单独说一下 spring.jpa.hibernate.ddl-auto=create这个设置选项。
这个属性常用的选项有四种:
- create:每次从头启动项目城市从头创新表布局,会导致数据丢失
- create-drop:每次启动项目建设表布局,封锁项目删除表布局
- update:每次启动项目会更新表布局
- validate:验证表布局,差池数据库举办任何变动
可是,必然要不要在出产情形行使 ddl 自动天生表布局,一样平常保举手写 SQL 语句共同 Flyway 来做这些工作。
- spring.datasource.url=jdbc:mysql://localhost:3306/springboot_jpa?useSSL=false&serverTimezone=CTT
- spring.datasource.username=root
- spring.datasource.password=123456
- # 打印出 sql 语句
- spring.jpa.show-sql=true
- spring.jpa.hibernate.ddl-auto=create
- spring.jpa.open-in-view=false
- # 建设的表的 ENGINE 为 InnoDB
- spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL55Dialect
3.实体类
我们为这个类添加了 @Entity 注解代表它是数据库耐久化类,还设置了主键 id。
- import lombok.Data;
- import lombok.NoArgsConstructor;
-
- import javax.persistence.Column;
- import javax.persistence.Entity;
- import javax.persistence.GeneratedValue;
- import javax.persistence.GenerationType;
- import javax.persistence.Id;
-
- @Entity
- @Data
- @NoArgsConstructor
- public class Person {
-
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private Long id;
- @Column(unique = true)
- private String name;
- private Integer age;
-
- public Person(String name, Integer age) {
- this.name = name;
- this.age = age;
- }
-
- }
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|