首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

JPA下令

2012-07-20 
JPA命令@entity 实体bean@id (@generatedvalue(starategygeneratedtypeauto根据使用的数据库方言决定生

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

热点排行