前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >传智播客OA项目学习--阶段三(级联操作)

传智播客OA项目学习--阶段三(级联操作)

作者头像
lpe234
发布2020-07-27 17:01:02
8140
发布2020-07-27 17:01:02
举报
文章被收录于专栏:若是烟花

一、Hibernate

1、级联操作

例子:

代码语言:javascript
复制
<set name="children" cascade="delete">
			<key column="parentId"></key>
			<one-to-many class="Department"></one-to-many>
		</set>

这样在添加(cascade="delete"),在进行删除操作时,会对“children”进行相同的操作。

代码语言:javascript
复制
 cascade属性有四种取值:  
             all:所有操作都执行级联操作;
             none:所有操作都不执行级联操作;
             save-update:保存和更新时执行级联操作;
             delete:删除时执行级联操作;

2、

代码语言:javascript
复制
@Resource //Spring 注入,获取实例
private SessionFactory sessionFactory;

sessionFactory.getCurrentSession().createQuery(//
                                                "FROM Department d WHERE d.parent IS null"//面向对象查询
                                                ).list();
                                                
 1)返回单条记录:get()、load()方法
     区别:a、get()方法不采用延迟加载方式;load()方法采用延迟加载的方式
           b、使用get()方法查找不存在的记录时会报NullPoint异常;
              使用load()方法查找不存在的记录时会报ObjectNotFound异常
           疑问:为什么get()方法查找不存在的记录时会报空指针异常?
           回答:get()方法执行查询语句,当查找到不存在的记录时就返回空值,当调用对象属性的
                 get()方法时,由于属性值为空,因此才会报空指针异常
  2)返回多条记录:list()方法、iterator()方法
     区别:1)list()方法不采用延迟加载方式;iterator()方法采用延迟加载的方式
           2)list()方法在执行时有N条记录就执行N条SQL语句;
              iterator()方法在执行时会产生"N+1"问题:有N条记录,就会执行N+1条SQL语句。
           疑问:为什么iterator()方法在执行时会产生"N+1"问题?
           回答:iterator()方法在执行时,首先会查询满足条件的记录的主键列,然后通过主键列再去
                 执行N条SQL语句
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档