- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章 Hibernate Annotations应用
Hibernate ORM 最佳实践第10章 Hibernate Annotations应用 回顾 了解和使用Hibernate拦截器 了解和使用Hibernate事件框架 目标 使用注释定义对象关系映射 使用Hibernate Annotations建立一个项目 利用注释进行各种对象关系映射 利用注释定义命名查询 Hibernate Annotations 利用注释代替XML映射文件,直接在POJO类中添加元数据注释. 在Hibernate Annotation(JRE5.0 以上)项目中添加以下包: 示例 代码 运行 运行 映射复合主键-1 示例 运行 映射复合主键-2 继承关系映射 Hibernate提供3种继承持久化策略: ①每个子类一张表 ②每个类一张表 ③共享一个数据表 每个子类一张表 父类使用@MappedSuperclass注释为父类,没有对应的表 示例 每个类一个数据表 父类及子类各自属性组成对应的表,且子类表通过外键与父类表关联: 父类中使用@Inheritance注释继承策略,子类使用@PrimaryKeyJoinColumn注释关联父类的列 示例 共享一个数据表 父类对应表(包含子类所有属性),增加一列区分子类 示例 运行 关联关系映射 使一个类知道另一个类的存在,表现在数据库中,通常用一个外键字段关联到另一张表。关联关系是有方向的,可以是单向,或双向的。 Hibernate提供下列检索策略: ①一对一关联 one-to-one ②一对多、多对一关联 one-to-many many-to-one ③多对多关联 many-to-many ④组件映射 component 关系映射(一) 多对一关系/一对多关系 它们是相对的关系,在关系映射表中使用标签@ManyToOne或@OneToMany来映射关系. 示例 运行 关系映射(二) 一对一关联 当对象之间只存在唯一的一对一关系时,在映射表中使用@OneToOne来定义映射关系 示例 运行 关系映射(三) 多对多关联 借助中间表来完成多对多关联关系信息的保存,在映射文件中使用@ManyToMany标签 示例 运行 使用注释映射查询 映射命名HQL查询 运行 示例 运行 总结 使用注释定义对象关系映射 使用Hibernate Annotations建立一个项目 利用注释进行各种对象关系映射 利用注释定义命名查询 使用@NamedQuery注释命名HQL查询 参数 映射命名SQL查询 @NamedNativeQuery注释SQL查询 @SqlResultSetMapping注释结果集对象映射关系 @EntityResult注释映射实体 @FieldResult注释结果集中属性和列名的映射 当返回所有列对应整个持久对象,可以使用:resultClass=Company.class Hibernate ORM Hibernate ORM 直接定义映射的持久化类名 不需要定义Company.hbm.xml javax.persistence(JPA) 描述下面类Company是一个持久类,映射到表company 描述持久化类主键及生成器策略 @column描述PO属性与列映射 如果使用是data的属性,那么这个 属性除了使用@Column注释外,还 应该使用@Temporal注释对应的数 据库映射类型 描述乐观锁 在配置文件hibernate.cfg.xml中: 可以使用编程方式代替: ①将多个属性组成的主键设计成一个主键类, 使用@Embeddable注释 ②在POJO类中使用@IdClass(主键类)注释 说明该主键类; ③在POJO类中组成主键的属性与主键类定义的属性 一致,并使用@Id注释 方法一: 运行两次 程序中没有使用到主键类ScoreId ①将多个属性组成的主键设计成一个主键类, 使用@Embeddable注释 ②在POJO类中使用@Embedded,@Id注释POJO主键; 利用主键类注释 POJO主键 Student sid:Long sname:String Undergraduate tutor:String Graduate gtime:date 属性注释 父类注释 子类对应的表(将父类属性 分别放在子类中)如下: 注释继承策略 属性注释 父类中使用@Inheritance注释继承策略,使用InheritanceType.SINGLE_TABLE; 使用@DiscriminatorColumn注释增加的子类区分列 子类中使用@DiscriminatorVal
文档评论(0)