`
a137268431
  • 浏览: 145788 次
文章分类
社区版块
存档分类
最新评论

Hibernate Annotation关系映射, 级联cascade属性

 
阅读更多
一。 Hibernate Annotation关系映射

1、一对一外键关联映射(单向)

2、一对一外键关联映射(双向)

3、一对一主键关联映射(不重要)在这不演示

在实际中很少用,使用注解@PrimaryKeyJoinColumn

意思是说,我的主键去参考另外一张表中的主键,作为我的主键,但是在我测试使用

注解一对一主键关联映射,在生成表的时候,数据库中并没有生成关联,使用XML

映射可以生成。Annotation注解一对一主键关联映,有些bug。不过没空去研究它。

因为在实际开发中一对一很少用。在实际开发中我机会没有用过,主键关联就更少了

4、多对一关联映射

5、一对多关联映射(单向)

6、一对多关联映射(双向)

7、多对多关联映射(单向)

8、多对多关联映射(双向)



二。其他配置

级联(cascade)属性
1、CascadeType.ALL(包括增、删、改、查,联动操作),其实查不算在内,查Fetch

2、CascadeType.MERGE(合并的join)--不重要

3、CascadeType.PERSIST(保存的时候在级联)

4、CascadeType.REFRESH(刷新说明:比如现在我查询出了数据,另外一个人在我查询数据之后,他对数据做了修改,这是才会级联上,hibernate会自动刷新我查询出来的数据)

5、CascadeType.REMOVE (只要在删除操作时才会级联)

6、我们一般都只设置CascadeType.ALL就OK了,

7、Cascade不是必须的,他的作用只是可以让我们快速的开发,我们也可以通过手动增、删、改、查

Fetch捉取策略
1、FetchType.EAGER(渴望的,希望马上得到)

a) 一对多关系,比如通过get()方法来get出一的一端,他之后会出一条SQL语句,不会自动去查询多的一端,如果设置FetchType.EAGER,会讲他的关联对象查询出来

b) 如果是load的话,他不会发出SQL语句,因为load支持延迟加载,只有真正获取数据时才会发SQL

2、FetchType.LAZY(懒加载)

a) 只有真正获取数据时才发出SQL语句

3、默认是:FetchType.LAZY(一对多)

4、默认是:FetchType.EAGER(多对一)

5、一般使用默认就可以了
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics