


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.类级别注解Entity Table实体类数句库表Entity(name=tableName) - 必须,注解将一个类属性:为一个实体 bean。name - 可选,对应数据库中的一个表。若表名与实体类名相同,则可以省略。Table(name=,catalog=,schema=)- 可选,通常和Entity 配合使用,只能标注在实体的 class 定义处,表示实体对应的数据库表的信息。属性:name -需可选,表示表的名称,默认地,表名和实体名称一致,只有在不一致的情况下才要指定表名catalogschema- 可选,表示 Catalog 名称,默认为 Catalog().- 可选 , 表示
2、 Schema 名称 , 默认为 Schema().2.属性级别注解IdVer生成主键定义乐观锁ColumnTransient表的列定义暂态属性2.1与主键相关注解- 必须,定义了到数据库表的主键的属性,一个实体只能有一个属性被为Id主键,置于 getx() 前。GeneratedValue(strategy=GenerationType,generator=) - 可选,用于定义主键生成策略。属性:Strategy - 表示主键生成策略,取值有:GenerationType.AUTO - 根据底层数据库自动选择(默认),若数据库支持自动增长类型,则为自动增长。GenerationType.I
3、NDENTITY - 根据数据库的 Identity 字段生成,支持 DB2、MS、SQL Server、SyBase 与 HyperanoicSQL 数据库的”Hibernate 可以指定 uuid 等主键生成方式SequenceGenerator 注解了一个数据库序列。属性:name - 表示该表主键生成策略名称,它被在GeneratedValue 中设置的“gernerator值中。sequenceName - 表示生成策略用到的数据库序列名称。initialValue - 表示主键初始值,默认为 0.allocationSize - 每次主键值增加的大小,例如设置成 1,则表示每次创建
4、新后自动加 1,默认为 50.示例 : IdGeneratedValues(strategy=StrategyType.SEQUENCE) publicgetPk() return pk;Hibernate 的类型为 field 时,在字段上进行注解声;类型为 property 时,在 getter 方法上进行注释。2.2与非主键相关注解Generator - 表示主键的名称,这个属性通常和 ORM 框架相关 , 例如:Identity类型主键。GenerationType.SEQUENCE - 使用 Sequence 来决定主键的取值,适合 Oracle、DB2等支持 Sequence 的数
5、据库,一般结合SequenceGenerator 使用。(Oracle 没有自动增长类型,只能用 Sequence)GenerationType.TABLE- 使用指定表来决定主键取值,结合TableGenerator 使用。如:Id TableGenerator(name=tab_cat_gen,allocationSize=1) GeneratedValue(Strategy=GenerationType.Table)Ver的支持- 可以在实体 bean 中使用Ver注解,通过这种方式可添加对乐观锁定Basic - 用于属性的存取策略:Basic(fetch=FetchType.EAGER
6、)即时获取(默认的存取策略)Basic(fetch=FetchType.LAZY)延迟获取Temporal - 用于定义到数据库的时间精度:Temporal(TemporalType=DATE)日期Temporal(TemporalType=TIME)Temporal(TemporalType=TIMEST时间) 两者兼具Column - 可将属性中工具非常有作用。属性:到列,使用该注解来覆盖默认值,Column 描述了数据库表该字段的详细定义,这对于根据 JPA 注解生成数据库表结构的name - 可选,表示数据库表中该字段的名称,默认情形属性名称一致nullableunique - len
7、gth - 可选,表示该字段是否允许为 null,默认为 true可选,表示该字段是否是唯一标识,默认为 false可选,表示该字段的大小,仅对 String 类型的字段有效,默认值 255.insertable INSETRTupdateable在字段,该-可选,表示在 ORM 框架执行操作时,该字段是否应出现语句中,默认为 true可选,表示在 ORM 框架执行更新操作时,该字段是否应该出现 UPDATE 语句中,默认为 true. 对于一经创建就不可以更改的属性非常有用,如对于 birthday 字段。-columnDefinition- 可选,表示该字段在数据库中的实际类型。通常 OR
8、M 框架可以根据据属性类型自动判断数据库中字段的类型,但是对于 Date类型仍无法确定数此库中字段类型究竟是 DATE,TIME 还是 TIMEST.外 ,String 的默认类型为 VARCHAR, 如果要将 String类型到特定数据库的 BLOB 或 TEXT 字段类型,该属性非常有用。示例 :Column(name=BIRTH,nullable=false,columnDefinition=DATE)public String getBithday() return birthday;Transient - 可选,表示该属性并非一个到数据库表的字段的,ORM 框架将忽略该属性,如果一个
9、属性并非数据库表的字段,就务必将其标示为Transient,否则 ORM 框架默认其注解为 Basic示例 :/ 根据 birth 计算出 age 属性TransientpublicgetAge() return getYear(new Date() - getYear(birth);2.3 无注解属性的默认值如果属性为单一类型,则为Basic,否则,如果属性对应的类型定义了Embeddable 注解,则为Embedded,否则,如果属性对应的类型实现了 Serializable, 则属性被存该对象的 serialized 版本,为Basic 并在一个列中保否则,如果该属性的类型为 java.
10、sql.Clob 或 java.sql.Blob,则作为Lob 并的 LobType.。到适当3.继承关系Inheritance 注解来定义所选择的策略. 这个注解需要在每个类层次结构(classhierarchy) 最顶端的实体类上使用4.实体 bean 的关联关系4.1 关联的一些定义单向一对多:一方有集合属性,包含多个多方,而多方没有一方的。用户-电子邮件单向多对一:多方有一方的 双向一对多:两边都有多方的双向多对一:两边都有多方的,一方没有多方的。类别- 类别,方便查询。班级- 学生,方便查询。单向多对多:需要一个中间表来两个实体表。-文章单向一对一:数据唯一,数据库数据也是一对一。舰
11、船- 水手主键相同的一对一:使用同一个主键,省掉外键关联。客户- 地址单向:关系写哪边,就由谁管理。双向:一般由多方管理。OneToMany(mappedBy=对方) /反向配置,对方管理。4.2关联的一些共有属性OneToOne、OneToMany、ManyToOne、ManyToMany 的共有属性:JoinColumn - 可选,用于描述一个关联的字段。JoinColumn 和Column 类似,介量描述的不是一个简单字段,而是一个关联字段,例如描述一个 ManyToOne 的字段。属性:name - 该字段的名称,由于JoinColumn 描述的是一个关联字段,如 ManyToOne,
12、 则默认的名称由其关联的实体决定。例如,实体 Order 有一个 user 属性来关联实体 User, 则 Order 的 user 属性为一个外键 ,其默认的名称为实体 User 的名称 + 下划线 + 实体 User 的主键名称4.3一对一关联OneToOne 表示一个一对一的1.主表类 A 与从表类B 的主键值相对应。主表:OneToOne(cascade = CascadeType.ALL) PrimaryKeyJoinColumnpublic B getB()Return b;return b;从表:无2.主表 A 中有一个从表属性是B 类型的b主表:OneToOne(cascade
13、 = CascadeType.ALL)JoinColumn(name=主表外键)/这里指定的是数据库中的外键字段。 public B getB()Entity - 配置集合属性类型,如:OneToMany(Entity=Book.class)fetch - 配置加载方式。取值有Fetch.EAGER -及时加载,多对一默认是 Fetch.EAGERFetch.LAZY - 延迟加载,一对多默认是 Fetch.LAZYcascade - 设置级联方式,取值有:CascadeType.PERSIST - 保存 CascadeType.REMOVE - 删除 CascadeType.MERGE -
14、修改 CascadeType.REFRESH - 刷新CascadeType.ALL - 全部从表:无3.主表 A 中有一个从表属性是B 类型的b,同时,从表 B 中有一个主表属性是 A 类型的 a主表:OneToOne(cascade = CascadeType.ALL)JoinColumn(name=主表外键)/这里指定的是数据库中的外键字段。 public B getB()return b;从表:OneToOne(mappedBy = 主表类中的从表属性)public 主表类 get 主表类()return 主表对象注意:JoinColumn 是可选的。默认值是从表变量名+_+从表的主键
15、(注意,这里加的是主键。而不是主键对应的变量)。多对一关联ManyToOne - 表示一个多对一的,该注解标注的属性通常是数据库表的外键。单向多对一:多方有一方的,一方没有多方的。在多方ManyToOne(Entity=X.class)/指定关联对象 JoinColumn(name=)/指定产生的外键字段名2.双向多对一:配置方式同双向一对多。示例 :/ 订单 Order 和用户 User 是一个 ManyToOne 的关系/ 在 Order 类中定义 ManyToOne() JoinColumn(name=USER) public User getUser() return user;4.5一对多关联OneToMany - 描述一个一对多的关联,该属性应该为集合类型,在数据库中并没有实际字段。1.单向一对多:一方有集合属性,包含多个多方,而多方没有一方的。4.6多对多关联ManyToMany - 可选,描述一个多对多的关联。属性:Entity - 表示多对多关联的另一个实体类的全名,例如:package.Book.class mappedBy - 用在双向关联中,把关系的权翻转。单向多对多关联:在主控方加入ManyToMany 注解即可。双向多对多关联:两个实体间互相关联的属性必须标记为Many
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 进行性肌萎缩的临床护理
- 2025员工外派合同范文
- 上思县高考试卷真题及答案
- 山西2017中考理综试卷及答案
- 三选一中考试卷及答案
- 2025版关于个人借款合同范本
- 2025太阳能光伏发电系统安装合同范本
- 商业服务机器人的经济效益分析考核试卷
- 2025物业服务合同版范本
- 自动售货机行业市场细分与定位考核试卷
- 突发环境事件应急预案评审会汇报课件-(模板)
- 自动喷水灭火系统 第11部分:沟槽式管接件
- 交通事故赔偿起诉状范例合集
- 广东省汕头市金平区2023-2024学年九年级下学期一模英语试卷
- 2024年湖北省武汉市高考数学一调试卷
- 室内装饰社交媒体营销策略
- 天津市2022-2023学年八年级下学期物理期中试卷(含答案)1
- 疼痛病人护理
- 【基于渠道视角的海尔智家营运资金管理分析10000字(论文)】
- 中职学校语文(基础模块)下册期末试卷含答题卡、答案
- 了解文学作品在社会变革中的反映与启迪
评论
0/150
提交评论