JPA命令
@Entity实体bean
@Id(@GeneratedValue(starategy=GeneratedType=AUTO根据使用的数据库方言决定生成策略可以省略/IDENITY根据数据库ID自增长方式生成主键值/SEQUENCE序列/TABLE采用表生成主键值策略/))唯一标示符可以标注在方法上还可以标注在属性的get方法上。
@Column(length=10,nullable=false,name=“persionname”)设置数据库中的属性长度和能否为空和数据库中的名字是persionname。
@Table(name=“xxx”)写在类上面该数据库的名字
@Temporal(TemporalTtype.DATA)设置存贮时间格式,写在属性的get方法上
*关于枚举使用的注解
@Enumerated(EnumType.STRING)写在get方法上面以字符串的形式保存。
*处理大文本的注解
@Lob用于标注大的文本或数组。
*让属性在数据库中显示也就是不做持久化
@Transient
*是否加载类属性的所有相关内容到内存。
@Basic(fetch=FetchType.EAGER(立刻加载)/LAZY(延迟加载)),不想加载那个属性的相关内容就在那个属性的get方法上写注释。
jpa关系
双向关系中
*一对多中多的一方为关系维护端(外键维护端),关系维护端负责外间记录的更新,关系被维护维护端是没有权利更新外键记录,关系被维护端通过mappedby来标注。
1.一对多再多的一端用@OneToMany(cascade={cascadeType.REFRESH(级联刷新)cascadeType.PERSIST(级联保存,调用prisist方法是才起作用),cascadeType.MERGE(级联更新,调用此方法时必须调用merge方法),cascadeType.REMOVE(级联删除,只有调用remove方法时才会起作用)},fetch=FetchType.LAZY(延迟加载,不写此属性默认是延迟加载,只要是要得到多(many)的一方的时候默认均是延迟加载),只要是一的一方(one)默认就是立即加载,mappedby=“order(此处写明是由那个属性来维护被维护端)”),在一的一端用@ManyToOne(cascade={cascadeType.MERGE,cascadeType.REFRESH},optional=false)
@JoinColumn(name="order_id")建外键的标示
*双向关系中的一对一
谁是维护端自己决定
注释用@OneToOne(mappedBy="idcard"(指的是被维护端),optional=false(是否有省份正就得有这个人的意思))
*双向关系中的多对多
双向关系中的多对多是对等的关系,选谁为维护端由自己决定,多对多中有关联表注释用@JoinTable(name="student_teacher",inverseJoinColumns=@JoinColumn(name=“teacher_id”)指的是关系表中被维护端(teacher)的外键与主键关系,JoinColumn指的是关系表中维护端(student)与主键的关系)
*联合主键
@Embeddable是用来告诉jpa本类离得属性是用在实体bean中的
@EmbededId用于表示此属性为实体的标示符
实用联合主键必须遵守一下要求:
1.提供无参构造方法
2.实现序列化接口
3.必须重写所有方法