目录
1、配置文件
2、实例类
3、Repository
1、配置文件
- jpa依赖于hibernate
- 在使用springboot集成jpa的时候,我们配置了一些参数
spring:
jpa:
database: mysql //指定了数据库的类型
show-sql: true //控制台显示sql
hibernate:
ddl-auto: update
其中hibernate.ddl-auto参数的主要作用是:自动创建、更新、验证数据库表结构。该参数有4个值:
- create:每次加载hibernate都会删除上一次创建的表,然后根据model生成新的表
- create-drop:每次加载hibernate都会根据model生成表,但是一旦sessionFactory一关闭,表就会删除
- update:第一次加载hibernate时根据model生成表,以后会根据model类自动更新表结构,这是最常用的属性。
- validate:每次加载hibernate时,验证创建的数据库表结构,只会和数据库中表进行比较,不会创建新表,但是会插入值
2、实例类
在实体类中常用的几个注解分别为:
- @Entity
- @Table
- @Column
- @Transient
现在主要shu说一下@Column和@Transient:
对@Column注解:
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Column {
String name() default "";
boolean unique() default false;
boolean nullable() default true;
boolean insertable() default true;
boolean updatable() default true;
String columnDefinition() default "";
String table() default "";
int length() default 255;
int precision() default 0;
int scale() default 0;
}
通过注解的源码可知,该注解可以配置name,unique,nullable,insertable,updateable等属性,通过这些属性可以指定列的名称,是否唯一,是否为null,插入是否必须,更新是否必须等
对@Transient,如果实体类中有写属性不想映射到表中的列,可以在属性上使用该注解,否则都会被映射成列
3、Repository
Spring Data JPA主要提供了一下接口:
- Reporitory,最顶层接口,是一个空的接口,目的就是为了统一所有的Repository类型,且能让组件自动扫描识别
- CrudRepository,是Reporitory的子接口,该接口提供了CRUD的功能
public interface CrudRepository<T, ID> extends Repository<T, ID> {
<S extends T> S save(S var1);
<S extends T> Iterable<S> saveAll(Iterable<S> var1);
Optional<T> findById(ID var1);
boolean existsById(ID var1);
Iterable<T> findAll();
Iterable<T> findAllById(Iterable<ID> var1);
long count();
void deleteById(ID var1);
void delete(T var1);
void deleteAll(Iterable<? extends T> var1);
void deleteAll();
}
- PagingAndSortingRepository:是CrudRepository的子接口,添加分页和排序的功能
- JpaRepository:是PagingAndSortingRepository的子接口,增加了批量操作