数据持久化《六》

企业级应用大多数都是围绕着数据库的CURD操作进行的,得益于spring boot starter 对常用数据库的封装,可以非常方便且快速与其集成。

为了确保各微服务保持自身的独立性及整个分布式架构的效率,在设计服务模块时应尽量保持每个微服务模块使用单一且独立的数据源,各微服务模块之间的数据库互不干扰。

spring data mysql :

spring data:基于spring 提供了统一编程模型,并且支持众多不同的数据库,在保证底层数据特性的前提下,为关系型数据库或非关系型数据库提供了统一的操作方式,极大的简化了开发与学习难度。

spring-boot-starter-data-jpa :是spring基于ORM框架,JPA规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据的访问和操作,它提供了包括增删改查等在内的常用功能,且易于扩展。

spring.datasource.url

 

数据源地址

spring.datasource.username

 

用户名

spring.datasource.password

 

用户密码

spring.datasource.driverClassName

 

启动名称

spring.jpa.database

 

指定使用的数据库

spring.jpa.show-sql

 

控制台中显示执行的SQL

spring.jpa.hibernate.ddl-auto

 

自动创建表时所采用的策略

Create

每次加载hibernate时都会删除上一次生成的表,然后根据你的model类再重新生成新表,即使两次没有任何改变也要这样执行

Create-drop

每次加载hibernate时根据model类生成表,session Factory一旦关闭,表会自动删除

Update

第一次加载hibernate时根据model类会自动建立起表的结构,以后加载hibernate时会根据model类自动更新表结构,即使表结构改变了表中的行也仍然存在,不会删除以前的行

Validate

每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表但会插入新值。

@Entity

 

标识该类为实体类,其中的name参数用于指定数据库的表名。默认以类名作为表名

@Id

 

标识当前字段为主键

@GeneratedValue

 

指定主键的自增长策略

auto

主键由程序控制

Identiry

主键由数据库控制

Sequence

根据底层数据库的序列来生成主键,条件时数据库支持序列

Table

使用一个特定的数据库表格来保持主键

@Column

 

标识实体类中属性与数据表中字段的对应关系

Name

数据库表中对应字段的名称

Unique

唯一标识

Null able

标识该字段是否可以为null值

Insert able

在使用insert脚本插入数据时,是否需要插入该字段的值

Updatable

在使用update脚本插入数据时,是否需要更新该字段的值

Columndefinition

创建表时,该字段创建的sql语句

Table

包含当前字段的表名

Length

当字段的类型为varchar时,指定字段的长度

Precision

数值的总长度

Scale

小数点所占的位数

@ManyToOne

 

指定多对一关系

TargetEntity

指定具体实体

Cascade

指定级联关系策略

CascadeType.refresh

获取数据库中的最新数据

CascadeType.persist

同步新增

CascadeType.merge

同步更新

CascadeType.remove

同步删除

CascadeType.all

以上策略总和

Fetch

控制加载数据策略

FetchType.eager

查询到父实体类的时候加载

FetchType.lazy

第一次访问数据库的时候加载

Optional

指定是否为必须

@OneToOne

 

一对一关系

OrphanRemoval

是否开启自动删除外键为null的数据

MappedBy

双向关联实体时,指定两者谁是维护端

Cascade/fetch

与多对一的一直

 

 

spring data jpa 默认预先生成了一些基本的CURD(增删查)方法,创建接口并继承相应的repository(资源库)便可获得数据库的dao操作功能,并被spring 容器加载。

repository:通过用来访问领域对象的一个类似集合的接口,在领域与数据映射层之间进行协调,也就是dao.

Repository

标识任何继承它的均为仓库接口类,方便spring自动扫描识别

Crudrepository

继承自repository,实现了一组crud相关方法

Pagingandsortingrepository

继承自Crudrepository ,实现了一组分页排序相关的方法

Jparepository

继承自Pagingandsortingrepository,实现了一组jpa规范相关的方法

public interface StudentRepository extends PagingAndSortingRepository<Student,Long> {
}

PagingAndSortingRepository:继承自repository 需要操作的实体类及id的数据类型以便完成映射。

spring data 除了提供基本的操作外还支持通过方法名自动生成SQL,使用时只需根据约定好的规则定义方法名,而方法的具体实现则由spring data完成,避免了许多重复的带啊吗。

List<Student> list = studentRepository.findByNameLikeOrderByIdAsc(String name);

 

猜你喜欢

转载自blog.csdn.net/qq_35781178/article/details/81256915
今日推荐