学习笔记-JPA

JPA学习笔记

开始:20210304

前言随笔:

hkd

本文是在学习JPA时整理的笔记,以便做好复习巩固和之后查询使用。

文章目录

  • JPA学习笔记
    • 前言随笔:
    • 概念:
    • 什么是spring data jpa?
    • 注解
    • 条件查询:

概念:

JPA是一套ORM(对象关系模型)规范,Java Persistence API , 对象持久化的API,可以通过注解或者XML描述【对象-关系表】之间的映射关系,并将实体对象持久化到数据库中。

Hibernate是框架,是一种jpa实现

什么是spring data jpa?

spirng data jpa是spring提供的一套简化JPA开发的框架,按照约定好的【方法命名规则】写dao层接口,就可以在不写接口实现的情况下,实现对数据库的访问和操作。同时提供了很多除了CRUD之外的功能,如分页、排序、复杂查询等等。

Spring Data JPA 可以理解为 JPA 规范的再次封装抽象,底层还是使用了 Hibernate 的 JPA 技术实现。

注解

@Entity 声明类为实体或表。

@Table 声明表名。

// @Table(name = "user")

@Basic 指定非约束明确的各个字段。该注解默认已经添加

//属性到数据表的映射,可以不写,optional表示属性是否可以为null
//fetch表示属性的读取策略

@Embedded 指定类或它的值是一个可嵌入的类的实例的实体的属性。

@Id 指定的类的属性,用于识别(一个表中的主键)。

@GeneratedValue 指定如何标识属性可以被初始化,例如自动、手动、或从序列表中获得的值。

TABLE:使用一个特定的数据库表格来保存主键。
SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。
IDENTITY:主键由数据库自动生成(主要是自动增长型)
AUTO:主键由程序控制。

@GeneratedValue(strategy = GenerationType.IDENTITY) //主键由数据库自动生成

@Transient 指定的属性,它是不持久的,即:该值永远不会存储在数据库中

   @Transient  //address属性不会添加到数据库中
    private String address;

@Column 指定持久属性栏属性。

@Column(length = 3,nullable = false)

@SequenceGenerator 指定在@GeneratedValue注解中指定的属性的值。它创建了一个序列。

@TableGenerator 指定在@GeneratedValue批注指定属性的值发生器。它创造了的值生成的表。

@AccessType 这种类型的注释用于设置访问类型。如果设置@AccessType(FIELD),则可以直接访问变量并且不需要getter和setter,但必须为public。如果设置@AccessType(PROPERTY),通过getter和setter方法访问Entity的变量。

@JoinColumn 指定一个实体组织或实体的集合。这是用在多对一和一对多关联。

@UniqueConstraint 指定的字段和用于主要或辅助表的唯一约束。

@ColumnResult 参考使用select子句的SQL查询中的列名。

@ManyToMany 定义了连接表之间的多对多一对多的关系。

@ManyToOne 定义了连接表之间的多对一的关系。

@OneToMany 定义了连接表之间存在一个一对多的关系。

@OneToOne 定义了连接表之间有一个一对一的关系。

@NamedQueries 指定命名查询的列表。

@NamedQuery 指定使用静态名称的查询。

条件查询:

JpaRepository接口提供了一些基本的数据操作方法,例如保存,更新,删除,分页查询等,开发者也可以在接口中自己声明相关的方法,只需要方法名称符合规范即可,在Spring Data中,只要按照既定的规范命名方法,Spring Data Jpa就知道你想干嘛,这样就不用写SQL了,那么规范是什么呢?参考下图:

法,只需要方法名称符合规范即可,在Spring Data中,只要按照既定的规范命名方法,Spring Data Jpa就知道你想干嘛,这样就不用写SQL了,那么规范是什么呢?参考下图:

img

你可能感兴趣的:(Java相关,java,jpa,mysql)