级联

mysql 外键、级联问题

一曲冷凌霜 提交于 2019-11-26 16:34:45
数据库问题:事务,外键,级联的作用。 外键的作用是两张表关联,保证数据的一致性和实现一些级联操作。保证数据的一致性和完整性,主要目的是控制存储在外键表中的数据。使两张表形成关联,外键只能引用表中列的值!可以使得两张表关联,保证数据一致性和实现一些级联操作。 外键默认作用2点:1.对子表(外间所在的表)的作用:子表在进行写操作的时候,如果外键字段在对应的附表中找不到对应的匹配,操作就会失败。 2.对父表的作用,对父表的主键字段进行删除和更改时,如果对应的主键在子表中被引用,操作就会失败。 外键的三种定制模式: district:严格模式(默认)父表不能删除或者更新一个被子表引用的记录。 cascade:级联模式,父表操作后,子表关联的数据也跟着一起操作。 set null:置空模式,前提外键字段允许为null,父表操作后,子表对应字段被置空。 使用外键的前提:1、表存储引擎必须是innodb,否则创建外键无约束效果。外键的列举类型必须与父表主键类型完全一致。外键的名字不能重复。已经存在数据的字段被设置为外键,必须保证字段中的数据域父表关键数据对应起来。 创建外键:foreign key(id) references my_tab2(主键字段名); alter table my_tab add [constraint 外键名 foreign key(外键字段名) reference

Hibernate 和 JPA 注解

*爱你&永不变心* 提交于 2019-11-25 19:48:57
转载请注明: Hibernate 和 JPA 注解 | 言曌博客 1 、 @Entity(name="EntityName") 必须, name为可选,对应数据库中一的个表 2 、 @Table(name="",catalog="",schema="") 可选,通常和@Entity配合使用,只能标注在实体的class定义处,表示实体对应的数据库表的信息 name:可选,表示表的名称.默认地,表名和实体名称一致,只有在不一致的情况下才需要指定表名 catalog:可选,表示Catalog名称,默认为Catalog(""). schema:可选,表示Schema名称,默认为Schema(""). 3 、 @id 必须 @id定义了映射到数据库表的主键的属性,一个实体只能有一个属性被映射为主键.置于getXxxx()前. 4 、 @GeneratedValue(strategy=GenerationType,generator="") 可选 (如果不写,主键需要不会自动生成,需要手动赋值) strategy:表示主键生成策略,有AUTO,INDENTITY,SEQUENCE 和 TABLE 4种,分别表示让ORM框架自动选择, 根据数据库的Identity字段生成,根据数据库表的Sequence字段生成,以有根据一个额外的表生成主键,默认为AUTO generator