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.必须重写所有方法

你可能感兴趣的:(bean,jpa)