JPA
主键生成策略
JPA提供四种标准用法为:TABLE,SEQUENCE,IDENTITY,AUTO;
AUTO:主键自动增长,由应用程序控制(JPA默认策略就是AUTO)。
IDENTITY:主键由数据库自动生成(主要就是自动增长)。
SEQUENCE:根据底层数据库的序列来生成主键,条件就是数据库支持序列。
TABLE:使用一个特定的数据库表来保存主键。
自增长ID生成策略:
1、Oracle自增长注解
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
2、MySQL自增长注解
@Id
@GeneratedValue(strategy = GenerationTypeType.INDENTY)
private Long id;
UUID之间生成策略(优点:所有数据库通用,便于移植)
级联操作
级联操作就是:给当前设置的实体操作另一个实体的权限。这个理解可以推广到每一个CascadeType。
public enum CascadeType {
/** 级联所有操作Cascade all operations
*拥有以下所有级联操作权限。
*/
ALL,
/** 级联保持操作Cascade persist operation */
PERSIST,
/** 级联合并操作Cascade merge operation */
MERGE,
/** 级联移除操作Cascade remove operation */
REMOVE,
/** 级联刷新操作Cascade refresh operation
* 假设场景 有一个订单,订单里面关联了许多商品,这个订单可以被很多人操作,那么这个时候A对此订单和关联的商品进行了修改,与此同时,B也进行了相同的操作,但是B先一步比A保存了数据,那么当A保存数据的时候,就需要先刷新订单信息及关联的商品信息后,再将订单及商品保存。
*/
REFRESH,
/**
* 级联脱管/游离操作Cascade detach operation
*如果你要删除一个实体,但是它有外键无法删除,你就需要这个级联权限了。它会撤销所有相关的外键关联。
* @since 2.0
*
*/
DETACH
}