`
long2010
  • 浏览: 55603 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

转:hibernate之传播性持久化(把级联应用到关联)

阅读更多

hibernate之传播性持久化(把级联应用到关联)


hibernate允许你给每个关联映射指定一种级联样式,它为所有的状态转变提供了更多灵活和更细粒度的控制。
hibernate读取被声明的样式,并自动把操作级联到被关联的对象。在xml映射元数据中,把cascade="..."属性放
在<one-to-one>或者<many-to-one>映射元素中,来启用传播状态变化。所有的集合映射(<set>,<bag>,<
list>,<map>)都支持cascade属性。然而,delete-orphan设置只适用于集合。很显然,你永远不必给引用值类
型类的集合启用传播性持久化---这里被关联对象的生命周期是依赖和隐式的。依赖型生命周期的细粒度控制只与实
体之间的关联相关。

XML属性            注解

-------            --------

None               (默认)Hibernate忽略关联

save-update        org.hibernate.annotations.CascadeType.SAVE_UPDATE

                   当Session被清除,且对象被传递到save()或者update()时,Hibernate就导航关联,
并保存刚刚被实例化的瞬时实例和把变化持久化到脱管状态的实例。

persist            javax.persistence.CascadeType.PERSIST

                   当对象传递到persist()时,hibernate使任何被关联的瞬时实例都变成持久化。如果
使用原生的Hibernate,级联则只在调用时发生。如果使用EntityManager模块,这项操作则在持久化上下文
清除时被级联。

merge              javax.persistence.CascadeType.MERGE

                   Hibernate导航关联,并在对象传递到merge()时,通过相当的持久化实例合并被关
联的脱管实例。可到达的瞬时实例被变成持久化。

delete             org.hibernate.annotations.CascadeType.DELETE

                   当对象被传递到delete()或者remove()时,Hibernate就导航关联,并删除被关联的
持久化实例。

remove             javax.persistence.CascadeType.REMOVE         

                   当对象被传递到remove或者delete()时,这个选项就把级联删除启用到被关联的持
久化实例。

lock              org.hibernate.annotations.CascadeType.LOCK

                   这个选项把lock操作级联到被关联的实例,如果对象是脱管的,就把它们重附到持
久化上下文。注意LockMode没有被级联:Hibernate假设你在被关联对象上不想要悲观锁---例如,因为根
对象上的悲观锁已经足以避免并发修改。

replicate          org.hibernate.annotations.CascadeType.REPLICATE

                   hibernate导航该关联,并把replicate()操作级联到被关联的对象

evict              org.hibernate.annotations.CascadeType.EVICT

                   当对象被传递到hibernate Session中的evict()时,hibernate从持久化上下文清
除被关联的对象

refresh            javax.persistence.CascadeType.REFRESH

                   当对象被传递到refresh()时,hibernate从数据库中重新读取被关联对象的状态。

all                javax.persistence.CascadeType.ALL

                   这项设置包括并启用前面列出的所有级联选项。

deleteorphan       org.hibernate.annotations.CascadeType.DELETE_ORPHAN

                   当被关联的对象从关联(即集合中)被移除时,这项额外的特殊设置启用了它们的删
除。如果你在一个实体集合中启用这项设置,就等于告诉hibernate:被关联的对象没有共享的引用,且当
引用从集合中被移除时,它可以被安全地删除

----------                  

注意:几个级联可以以逗号分隔的列表应用到特定的关联。还要注意:delete-orphan没有包括在all中。

原文:http://blog.csdn.net/fhd001/archive/2010/10/12/5934703.aspx

 

分享到:
评论

相关推荐

    pre_o_1csdn63m9a1bs0e1rr51niuu33e.a

    pre_o_1csdn63m9a1bs0e1rr51niuu33e.a

    matlab建立计算力学课程的笔记和文件.zip

    matlab建立计算力学课程的笔记和文件.zip

    FT-Prog-v3.12.38.643-FTD USB 工作模式设定及eprom读写

    FT_Prog_v3.12.38.643--FTD USB 工作模式设定及eprom读写

    matlab基于RRT和人工势场法混合算法的路径规划.zip

    matlab基于RRT和人工势场法混合算法的路径规划.zip

    matlab基于matlab的两步定位软件定义接收机的开源GNSS直接位置估计插件模块.zip

    matlab基于matlab的两步定位软件定义接收机的开源GNSS直接位置估计插件模块.zip

    office 2016三和一精简版

    office 2016三和一精简版

    Scrapy-1.0.2-py2-none-any.whl

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    麦肯锡咨询顾问必备宝典-时间管理.ppt

    麦肯锡咨询顾问必备宝典-时间管理.ppt

    setuptools-0.6c10-py2.4.egg

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    麦肯锡顾问的黄金思考方法.pptx

    麦肯锡顾问的黄金思考方法.pptx

    91fdd461elb59a4ce8dfcfc46bc283a7.msi

    91fdd461elb59a4ce8dfcfc46bc283a7.msi

    ansys maxwell

    ansys maxwell

    5-5.py

    5-5

    xx广告促销计划流程实施手册.ppt

    xx广告促销计划流程实施手册.ppt

    仿小米商城微信小程序源码+项目说明.zip

    仿小米商城微信小程序源码+项目说明.zip

    pytest-4.6.0.tar.gz

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    Scrapy-2.10.1.tar.gz

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    麦肯锡xx客户满意服务.ppt

    麦肯锡xx客户满意服务.ppt

    网课专注度监测预警系统基于yolov5目标检测的网课专注度检测系统源码+模型+pyqt5界面.zip

    网课专注度监测预警系统基于yolov5目标检测的网课专注度检测系统源码+模型+pyqt5界面.zip

    基于python+Scrapy的农业数据爬虫设计与实现

    【作品名称】:基于python+Scrapy的农业数据爬虫设计与实现 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 基于Scrapy的农业数据爬虫设计与实现 . ├── Crops # web服务 │ ├── app.py │ ├── static # 静态文件 │ │ ├── css │ │ └── js │ └── templates # 静态页面 │ ├── corn.html │ ├── corns.html │ ├── index.html │ ├── porcor.html │ ├── pork.html │ └── porks.html ├── README.md └── spider # 爬虫及数据处理 ├── integration # 数据汇总 │ └── corn.py └── tutorial # 爬虫 ├── scrap

Global site tag (gtag.js) - Google Analytics